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

  • 23
    いいね
  • 0
    コメント

はじめに

HerokuのDBはデフォルトではPostgreなので、MySQLを使おうとすると設定を変更する必要がある。

前準備

Heroicで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