0
1

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 3 years have passed since last update.

PG::UndefinedTable: ERROR: table " " does not existとでて、マイグレーションできない

Last updated at Posted at 2020-03-06

Dockerで構築されたRailsをHerokuへデプロイの一部を、こちらに書いています。

ネットで調べた情報をもとにマイグレーションを行おうとしてもうまくできなく、
長時間つまずいたため同じような状態に陥った人は参考にしてみてください。

##問題点

$ heroku run rails db:migrate

を実行した時に、正常では出ない量の、文字が現れてました。
確認してみると、途中でROLLBACKされており、

PG::UndefinedTable: ERROR:  table "***" does not exist

***というテーブルが存在しないよ。というエラー文が表示されていました。

##原因

以前、テーブルを削除するマイグレーションファイルを作成した時に、元のマイグレーションファイルを削除していました。
そのため、今回テーブルを削除するマイグレーションファイルが読み込む時に、元のファイルがないのでテーブルが作成されておらず、削除するはずのテーブルが見つからないという状態でした。

##行ったこと

①元のファイルがないので、削除するはずのテーブルが作られなく、削除する指示する必要がないため、***というテーブルの削除を指示するファイルを削除し、マイグレーションを行いました。

$ heroku run rails db:migrate

②再びコンテナにプッシュ

$ heroku container:push web

①も②もこれまでと同じエラー文が出たため、マイグレーションの状態を確認しました。
すると、以下のように、削除したはずの***というファイルをマイグレーションにしようとしていました。

$ heroku run rails db:migrate:status

   up     20200227071559  Create 〜
   up     20200229041915  Change 〜
  down    20200229044809  Drop table ***

###補足
マイグレーションファイルをrollbackせずに、削除してしまった時など、 マイグレーションのステータスに********** NO FILE **********と出てしまうようです。
私も気付いたらdownであった***テーブル********** NO FILE **********となっていました。
そのため、以下のサイトを参考に1度dummyテーブルを作成し対応しました。
herokuの場合、マイグレーションファイルを作成後そのままステータスを確認しても反映されていません。
そのため、私は以下の解決方法を実行し終えた後、ステータスを確認しました。
無事、記事のように行うことができました。
【Rails】db:migrate:statusで*** NO FILE ***と出た時の対処

##解決方法

コンテナと、DBを1度リセットし、実行し直すとマイグレーションできました。

【Heroku】heroku container:push web で変更が反映されない
【Heroku】DBを1から作り直したい時にやること(rails db:reset)

$ heroku container:rm web
$ heroku pg:reset DATABASE_URL
 ▸    WARNING: Destructive action
 ▸    postgresql-fitted-20135 will lose all of its data
 ▸    
 ▸    To proceed, type **** or re-run this command with --confirm ****

> ****
Resetting postgresql-fitted-20135... done

$ heroku container:push web
$ heroku container:release web

以上を行った上で、マイグレーションを実行。

$ heroku run rails db:migrate
0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?