LoginSignup
2
0

More than 3 years have passed since last update.

Herokuでマイグレーションできなかった時の解決方法。

Posted at

前提

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つになれば嬉しいです。

2
0
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
2
0