LoginSignup
2
5

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-16

最初から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'] %>

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5