Створіть нову програму Ruby on Rails за допомогою MySQL замість SQLite


130

Я хочу створити свою програму Rails за допомогою MySQL, тому що мені це дуже подобається. Як я можу це зробити в останній версії Rails замість SQLite за замовчуванням?

Відповіді:


140

Якщо у вас вже є проект рейки, замініть адаптер у config/database.ymlфайлі на mysqlта переконайтеся, що ви вказали дійсне ім'я користувача та пароль, а також необов'язково - сокет:

development:
  adapter: mysql2
  database: db_name_dev
  username: koploper
  password:
  host: localhost
  socket: /tmp/mysql.sock

Далі переконайтесь, що ви відредагували свій Gemfile, щоб включити mysql2 або activerecord-jdbcmysql-адаптер (якщо використовується jruby).


2
Це корисно; як інші відповіді просто використовуйте генератор. Ця відповідь працює для додавання MySQL до програми після його створення, або для заміни існуючого (наприклад, SQLite) БД або для додавання вторинної бази даних. Також, здається, mysql2 є первинним каменем в наші дні для Rails.
rcd

13
вам також доведеться оновити Gemfile; видалити gem 'sqlite3'та додатиgem 'mysql2'
RGB

262

Зазвичай ви створюєте нову програму Rails, використовуючи

rails ProjectName

Щоб використовувати MySQL, використовуйте

rails new ProjectName -d mysql

56

Для Rails 3 ви можете використовувати цю команду для створення нового проекту за допомогою mysql:

$ rails new projectname -d mysql


22

Якщо ви ще не створили свою програму, просто перейдіть до cmd (для windows) або терміналу (для linux / unix) і введіть наступну команду, щоб створити рейковий додаток з базою даних mysql:

$rails new <your_app_name> -d mysql

Вона працює для будь-якої версії рейки 3. Версія 3. Якщо ви вже створили додаток, то можете зробити одну з двох наступних речей:

  1. Створити додаток другого імені з базою даних mysql, перейдіть до cd else_name / config / і скопіюйте файл database.yml з цього нового додатка. Вставте його в database.yml додатка your_app_name . Але переконайтеся, що змінити імена бази даних та встановіть ім’я користувача / пароль вашої бази даних відповідно у файлі database.yml після цього.

АБО

  1. Перейдіть до cd your_app_name / config / і відкрийте database.yml. Перейменуйте таким чином:

розробка:
адаптер: база
даних mysql2: ім'я db_name_name
ім'я користувача: root
пароль:
хост: localhost
socket: /tmp/mysql.sock

Крім того, видаліть gem 'sqlite3' зі свого Gemfile та додайте дорогоцінний камінь 'mysql2'


13

Якщо ви використовуєте рейки 3 або новішої версії

rails new your_project_name -d mysql

якщо у вас є більш рання версія

rails new -d mysql your_project_name

Тому перед тим, як створити проект, потрібно знайти версію рейок. що ви можете знайти

rails -v


11
rails new <project_name> -d mysql

АБО

rails new projectname

Зміни в config / database.yml

development:
  adapter: mysql2
  database: db_name_name
  username: root
  password:
  host: localhost
  socket: /tmp/mysql.sock


9
$ rails --help 

завжди ваш найкращий друг

використання:

$ rails new APP_PATH[options]

також зауважте, що параметри повинні бути вказані після назви програми

рейки і mysql

$ rails new project_name -d mysql

рейки та postgresql

$ rails new project_name -d postgresql

8

Вам слід використовувати перемикач -D замість -d, оскільки він генерує дві програми та mysql без папок документації.

  rails -D mysql project_name  (less than version 3)

  rails new project_name -D mysql (version 3 and up)

Або ви просто використовуєте цю --databaseопцію.



6

У Rails 3 ви могли б зробити

$rails new projectname --database=mysql

6

Якщо ви створюєте нову програму rails, ви можете встановити базу даних за допомогою перемикача -d таким чином:

rails -d mysql myapp

Однак завжди легко переключити вашу базу даних пізніше, а використовувати sqlite дійсно простіше, якщо ви розробляєте на Mac.


3

На новому проекті, легкий горох:

rails new your_new_project_name -d mysql

Щодо існуючого проекту, безумовно, складніше. Це дало мені ряд питань щодо існуючих проектів рейок. Цей вид роботи зі мною:

# On Gemfile:
gem 'mysql2',  '>= 0.3.18', '< 0.5' # copied from a new project for rails 5.1 :)
gem 'activerecord-mysql-adapter' # needed for mysql..

# On Dockerfile or on CLI:
sudo apt-get install -y  mysql-client libmysqlclient-dev 

2

Спочатку переконайтеся, що встановлено дорогоцінний камінь mysql, якщо ні? ніж введіть у консолі наступну команду

gem install mysql2

Після чого створити новий додаток рейлів та встановити базу даних mysql як базу даних за замовчуванням, ввівши наступну команду у консолі

rails new app-name -d mysql

1
ви хочете замість цього додати дорогоцінний камінь у Gemfile.
Ріккардо

0

Використовуйте наступну команду, щоб створити новий додаток для API з mysql базами даних

rails new <appname> --api -d mysql


  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: 
  socket: /var/run/mysqld/mysqld.sock

0

database.yml

# MySQL. Versions 5.1.10 and up are supported.
#
# Install the MySQL driver
#   gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
#   gem 'mysql2'
#
# And be sure to use new-style password hashing:
#   https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  host: localhost
  database: database_name
  username: username
  password: secret

development:
  <<: *default

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default

Gemfile :

# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'

0

спершу слід переконатися, що драйвер MySQL знаходиться у вашій системі, якщо не запускати це на своєму терміналі, якщо ви використовуєте Ubuntu або будь-який дистрибутив Debian

sudo apt-get install mysql-client libmysqlclient-dev

і додайте це до свого Gemfile

gem 'mysql2', '~> 0.3.16'

потім запустіть у вашому кореневому каталозі проекту

bundle install

після цього ви можете додати конфігурацію mysql для config / database.yml як попередні відповіді

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.