Ответов (19)19
Если у вас уже есть проект rails, измените адаптер в 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).
Вы должны использовать переключатель -D вместо -d, потому что он будет генерировать два приложения и mysql без папок документации.
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
В качестве альтернативы вы просто можете использовать --database
опцию.
Если вы еще не создали свое приложение, просто перейдите в cmd (для Windows) или в терминал (для linux / unix) и введите следующую команду, чтобы создать приложение rails с базой данных mysql:
$rails new <your_app_name> -d mysql
Он работает для всего, что выше rails версии 3. Если вы уже создали свое приложение, вы можете выполнить одно из двух следующих действий:
- Создайте приложение another_name с базой данных mysql, перейдите на cd another_name / config / и скопируйте файл database.yml из этого нового приложения. Вставьте его в файл database.yml приложения your_app_name . Но убедитесь, что вы изменили имена базы данных и после этого установите имя пользователя / пароль для вашей базы данных в файле database.yml.
ИЛИ
- Перейдите на cd your_app_name / config / и откройте database.yml. Переименуйте следующим образом:
разработка:
адаптер: база
данных mysql2 : db_name_name
имя пользователя:
пароль root :
хост: localhost
сокет: /tmp/mysql.sock
Кроме того, удалите гем sqlite3 из своего Gemfile и добавьте гем mysql2.
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:[email protected]/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'
вы сначала должны убедиться, что драйвер MySQL находится в вашей системе, если вы не запускаете его на своем терминале, если вы используете Ubuntu или любой дистрибутив Debian.
sudo apt-get install mysql-client libmysqlclient-dev
и добавьте это в свой Gemfile
gem 'mysql2', '~> 0.3.16'
затем запустите в корневом каталоге проекта
bundle install
после этого вы можете добавить конфигурацию mysql в config / database.yml как предыдущие ответы
В новом проекте easy peasy:
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