RailsのデフォルトDBはSQLiteですが、MySQLに変更してみようかと思います👨💻
development環境
まずは開発環境でMySQLを使用する手順です。
DB設定
Gemfile
gem 'mysql2'
database.yml
#編集
development:
adapter: mysql2
encoding: utf8
database: tweet_app
pool: 5
username: root
password:
host: localhost
$ bundle install
新規DB作成
$ bundle exec rake db:create
$ bundle exec rails g model User name:string email:string password:string
$ bundle exec rake db:migrate
production環境
実際にHerokuでデプロイした後もMySQLで動くよう実装する手順です。
##①Herokuでアプリケーション作成
こちらの記事を参考にしつつ、git push heroku master
をする手前まで進めます。
後述するアドオンの追加のところで、Herokuにクレジットカード情報を登録しておく必要がある(お金はかかりません)ので、登録しておいてください。
##②cleardbアドオンを追加する
$ heroku addons:add cleardb
##③heroku-postgresqlアドオンを削除する
$ heroku addons:destroy heroku-postgresql -a <アプリ名>
##④DATABASE_URLを編集する
$ heroku config | grep CLEARDB_DATABASE_URL
CLEARDB_DATABASE_URL: mysql://aaaaa:bbbbb@ccccc.cleardb.net/heroku_ddd?reconnect=true
上記のURLをMySQL2に切り替えます。コピーペーストしつつmysql2
に書き換えてください
$ heroku config:set DATABASE_URL='mysql2://aaaaa:bbbbb@ccccc.cleardb.net/heroku_ddd?reconnect=true'
##⑤環境変数を設定
Herokuで使用する環境変数を設定していきます。
$ heroku config | grep CLEARDB_DATABASE_URL
mysql://aaaaa:bbbbb@ccccc.cleardb.net/heroku_ddd?reconnect=true
- aaaaa = username
- bbbbb = password
- ccccc = hostname
- heroku_ddd?reconnect = db_name
$ heroku config:add DB_NAME="[db_name]"
$ heroku config:add DB_USERNAME="[username]"
$ heroku config:add DB_PASSWORD="[password]"
$ heroku config:add DB_HOSTNAME="[hostname]"
$ heroku config:add DB_PORT="3306"
database.yml
production:
<<: *default
database: <%= ENV['DB_NAME'] %>
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
※ご自身の出力結果と照らし合わせながら設定してください。
##⑥git push & migrate実行
$ git push heroku master
$ heroku run rake db:migrate
$ heroku open
独学でやっておりますので、間違っている or 動かないなどあれば、ご指摘いただけると幸いです🙇♂️