RailsのDBをMySQLへ #最初からMySQLを指定 #途中からMySQL


最初からMySQLを指定

rails newのときに、DBをMySQLに指定する。
下記コマンドでデフォルトのDBMSがMySQLへ変わる。

$bundle exec rails new . --database=mysql

または

$bundle exec rails new . -d mysql

※rails newコマンドにオプション(ハイフンより後ろを追加すればOK
※上記2種類のオプションのどちらが良いのかは調べていませんが、追々調べたいです。

途中からDBをMySQLへ

※MySQLのインストールやセキュリティ設定?はすでに終わっているのを前提とします。

Gemfileへ追記とconfig/database.ymlファイルを変更します。

Gemfileへ追記

Gemfile

gem 'mysql2'

これで$bundle install

database.ymlファイルを編集

※変更前の内容と変更後の内容は、SQLiteでrails newしたときのdatabase.ymlの中身と、MySQLでrails newしたときのdatabase.ymlの中身をのせています。

変更前
# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

# 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
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3


変更後
# 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 } %>
  username: ユーザー名
  password:パスワード
  host: localhost

development:
  <<: *default
  database: プロジェクト名_development

# 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
  database: プロジェクト名_test

# 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
  database: プロジェクト名_production
  username: プロジェクト名
  password: <%= ENV['プロジェクト名_DATABASE_PASSWORD'] %>