前提
mySQLからHerokuでデプロイしたけど、マイグレーションエラーが出てしまった人に自身が解決した方法を参考までに発信します。
ちなみにHerokuでエラーになりがちなのは
①データベースをSQLite3からPostgreSQLに変更していない。
②heroku run rake db:migrate を実行していない。
この2つが当てはまることが多いみたいです。
僕は当初、デプロイはできたのですが、
リンクに飛ぶと
We're sorry, but something went wrong.
と出てしまいました。
heroku logs
で状況を確認すると、500エラーが出ています。
デプロイ中の挙動を確認したところ、
PG::UndefinedTable: ERROR: relation "shops" does not exist
といったエラーが発生。
ローカル環境では、間違いなくshopsテーブルはあったのに。
存在がなかったことになっています:(;゙゚'ω゚'):
migrationができていないのではないかと思い、本番環境のマイグレーションを確認しました。
heroku run rails db:migrate:status
down 20200707102907 Devise create shops
down 20200707103416 Create items
down 20200707103432 Create messages
down 20200707103449 Create shop items
down 20200714031558 Create likes
down 20200716002749 Add image to shops
やっぱり全部downしてしまっています。
これだと、マイグレーションできていないです(ちなみに、ローカルでは全部upになってました)。
マイグレーションでのエラーを解決する為に1日悩んでいました。
翌日、エラー文の中に
ActiveRecord::NoDatabaseError:
FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
/app/vendor/bundle/ruby/2.6.0/gems/〜
と書かれていて、マイグレーション以前にPostgreSQLが反映していないから
マイグレーションできていないのではないか?と思い始めました。
そこで、Gemファイルを確認したところ問題なし。↓
gem 'sqlite3', group: :development
gem 'pg', group: :production
もう1つ怪しいところが、database.yml ↓↓
production:
<<: *default
adapter: postgresql
encoding: unicode
pool: 5
この記載が漏れていました!
このあと再度、
cd yourapp #デプロイしたいアプリに移動
git add . #addして
git commit -m "Add pg gem for Heroku" #コミット
git push heroku master
heroku run rake db:migrate
リンクへ飛んだら、無事デプロイできました!!
migrate:statusも全部upになってました。
migrateに引っ張られすぎてましたが、migrateできない理由は
PostgreSQLがうまく機能していなかったことが原因でした。
migrateでエラーになってしまっている人の参考の1つになれば嬉しいです。