LoginSignup
119
124

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-04-13

はじめに

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

119
124
3

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
119
124