技術ブログっぽいなにか

Ruby・Railsメインでいろんなこと書きます

HerokuのDBをPostgreSQLからMySQLに変更する


Railsでアプリ作ってて、デフォルトのPostgreSQLを使ってたけど
中身をSequelで見たいなあと思ったのでPostgreSQLからMySQLに変更することにした。


ググったらたくさん記事が出てくるからラクショーじゃん!と思っていたけどかなり時間がかかってしまったし、
次も同じ目に遭いそうだなと思ったのでメモ。

Gemfileにmysqlを追加する

#gemfile
gem 'mysql2',       '~> 0.3.20'

database.ymlの設定を変更する

#database.yml
default: &default
  adapter: mysql2
  pool: 5
  timeout: 5000

development:
  <<: *default
  adapter: mysql2
  database: appname_development
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default

production:
  <<: *default
  adapter: mysql2
  pool: 5
  timeout: 5000

bundle installする

$ bundle install

ここでGemfile.lockに差分ができるので、Gemfileとともにコミットする。
私はこれをやってなくて2日くらい悩んでいた。なんと無駄な・・・
うまくいったらHerokuにpushする。

HerkouのアドオンにClearDBを追加する

$ heroku addons:add cleardb 

もしかしたらアプリ名指定しろよって言われるかも?

DATABASEの設定を削除する

$ heroku addons:destroy heroku-postgresql -a appname

ググった時に出てくる記事だとheroku addons:detach DATABASE -a appnameでもいいっぽいのだけど、それだとなぜか通らなかった。 destroyだといけた。 アプリの名前入れてくれーって言われるので入れてあげると削除してくれる。

DATABASE_URLをCLEARDATABASE_URLのものに書き換える

$  heroku config:set DATABASE_URL='mysql2://xxxxx?reconnect=true' --app appname

mysqlmysql2に変えることを忘れずに。

いちおうdb:migrateしてheroku openする

$ rails db:migrate
$ heorku open




おわり。
大変だった…また次もつまづきそうだ…