25
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuでMySQLを使うときはDATABASE_URLを書き換える

Last updated at Posted at 2016-10-16

##環境

  • OS X El Capitan 10.11.16
  • ruby 2.3.0
  • rails 4.2.5.2

##前提

無料枠内でのHerokuの準備とデプロイ(Mac 10 + Rails 4.2 + MySQL 5.6)を参考に
HerokuでMySQLを使うための設定をしていたところ
heroku run rake db:migrateを実行したところで以下のようなエラー発生

$ heroku run rake db:migrate
Running rake db:migrate on ⬢ <アプリ名>... up, run.2205 (Free)
rake aborted!
Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord)
...

##問題と原因

HerokuのaddonでMySQLを追加したはずだが、うまく接続できていなさそう
database adapterがpostgresqlに設定されたままなのが原因か

##解決策
そこでHerokuでMySQLを使おうとして詰まったところ - Qiitaを参考に解決を試みたところ、どうやら

1. CLEARDB_DATABASE_URLのmysqlmysql2に書き換えて、
2. DATABASE_URLもpostgresじゃなくてmysql2のURLに変える
必要がありそう

$ heroku config
=== flagmap Config Vars
CLEARDB_DATABASE_URL: mysql://~~~~~ #1の方
DATABASE_URL: postgres://~~~~~ #2の方
#..

以下のようにして1の方は書き換えられた

$ heroku config:set CLEARDB_DATABASE_URL='mysql2://~~~~~'

しかし2の方が上手くいかない、、

$ heroku config:set DATABASE_URL='mysql2://~~~~~'
Setting DATABASE_URL and restarting ⬢ <アプリ名>... !
 ▸    Cannot overwrite attachment values DATABASE_URL.
$ heroku addons:detach DATABASE -a <アプリ名>
Detaching DATABASE to postgresql-cylindrical-92240 from ⬢ mysterious-peak-72912... !
 ▸    Cannot destroy last attachment to billing app for resource postgresql-cylindrical-92240

ググりまくった末、mysql - Heroku and ClearDB error - Stack Overflowで解決できた
**addons:detachではなくaddons:destroy**でやったら上手くいった

$ heroku addons:destroy heroku-postgresql -a <アプリ名>
 ▸    WARNING: Destructive Action
 ▸    This command will affect the app <アプリ名>
 ▸    To proceed, type flagmap or re-run this command with --confirm
 ▸    <アプリ名>

> <アプリ名>
Destroying postgresql-cylindrical-92240 on ⬢ <アプリ名>... done

最後に再び以下のコマンドで書き換え成功!

heroku config:set DATABASE_URL='mysql2://~~~~~'

herokuの設定を確認すると

$ heroku config
=== flagmap Config Vars
CLEARDB_DATABASE_URL: mysql2://~~~~~
DATABASE_URL: mysql2://~~~~~
...

無事変更できてます

$ heroku run rake db:migrate

これでデプロイ成功しました!

##参考にしたサイト

25
26
0

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
25
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?