Edited at

HerokuでMySQLを使おうとして詰まったところ

More than 1 year has passed since last update.


はじめに

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