##はじめに
HerokuのDBはデフォルトではPostgreなので、MySQLを使おうとすると設定を変更する必要がある。
##前準備
HerokuでMySQLを使うためにはクレジットカードの登録が必要です。
この記事がとても参考になるので、参考にしながら進めてください。
http://qiita.com/fukumone/items/b8934f78f841b19edbbe
##HerokuのDBをMySQLにする
heroku addons:add cleardb
コマンドを使ってClearDBアドオンを追加して、データベースの設定をMySQLにする。
##HerokuのバージョンをGemと合わせる
Railsの場合はMySQLのバージョンを対応するGemに合わせる必要がある。
自分のGemはmysql2だった。
###Gemfileを確認する。
プロジェクトのGemfileを見れば良いので簡単!
gem 'mysql2', '0.3.18'
###データベースの情報を確認する
heroku config | grep CLEARDB_DATABASE_URL
コマンドでデータベースの情報を見てみると、以下だった。
heroku config | grep CLEARDB_DATABASE_URL
=> CLEARDB_DATABASE_URL: mysql://~~~~~~~~~~~
###Gemとデータベースのバージョンを合わせる
heroku config:set DATABASE_URL=~~~~~
コマンドで書き換えればOKぽい。
heroku config:set DATABASE_URL=mysql2://~~~~~~~~~~~(~~~はheroku config | grep CLEARDB_DATABASE_URLで出力された内容と同じ)
しかし、、、、
heroku config:set DATABASE_URL=mysql2://~~~~~~
Setting config vars and restarting app-name... !!!
▸ Cannot overwrite attachment values DATABASE_URL.
上書きされてなくない?(T_T)
調べてみると、いた!!!
同じような悩みの方
http://stackoverflow.com/questions/35061914/how-to-change-database-url-for-a-heroku-application
どうやら、上書きする前にdetachする必要があるらしい?
Herokuの設定を見てみるとこんな感じだった。
heroku config
=== line-bot-practice Config Vars
CLEARDB_DATABASE_URL: mysql://~~~~~~~~~
HEROKU_POSTGRESQL_SILVER_URL: postgres://~~~~~~~~~~~
LANG: en_US.UTF-8
RACK_ENV: production
RAILS_ENV: production
RAILS_SERVE_STATIC_FILES: enabled
SECRET_KEY_BASE:*********
設定の中のHEROKU_POSTGRESQL_SILVER_URL
を書き換える必要がある。
そのために、以下のコマンドを順に実行していく。
heroku addons:attach heroku-postgresql -a <app_name> --as HEROKU_DATABASE(これは必要ないかも)
heroku addons:detach DATABASE -a <app_name>
heroku config:add DATABASE_URL=mysql2://~~~~~~~~~~~(~~~はheroku config | grep CLEARDB_DATABASE_URLで出力された内容と同じ)
無事変更されました\(^o^)/
heroku config:set DATABASE_URL=mysql2://~~~~~~~~
Setting config vars and restarting app-name... done
DATABASE_URL: mysql2://~~~~~~~~~
###参考
前準備
http://qiita.com/fukumone/items/b8934f78f841b19edbbe
エラー解決
http://stackoverflow.com/questions/35061914/how-to-change-database-url-for-a-heroku-application