マイグレーションファイルは親テーブルから実行しないとエラーになる


はじめに  

ポートフォリオを作成するなかで、エラーになった箇所と解決方法を簡単にまとめました。
基本的な部分ですが、自分用のメモとして残しておきます。

エラーの内容

PG::UndefinedTable: ERROR:  relation "モデル名" does not exist

rails db:migrateを実行したときに上記のようなエラーとなりました。

結論

マイグレーションを実行した時に、親テーブル(外部キーを参照される側)から実行しなければならない。
今回の場合は、子テーブル(外部キーを参照する側)から実行してしまったで上記のエラーになってしまいました。

解決法

マイグレーションファイルを確認する

 Status   Migration ID    Migration Name
--------------------------------------------------
  down    2021xxxxxxxxxx  Create comments 【子テーブル】
  down    2021yyyyyyyyyy  Create documents
  down    2021zzzzzzzzzz  Create users 【親テーブル】

この場合、親テーブルであるusersテーブルとdocumentsテーブルを先に実行する必要がある。

マイグレーションファイルを一つずつ実行する

下記の通り、親テーブルを指定して実行する。

rails db:migrate:up VERSION=2021zzzzzzzzzz

親テーブルを実行出来たら、あとはrails db:migrateを実行すれば大丈夫です。

おわりに

基礎的な内容でしたが、逐一エラーになって躓いた部分や理解したことはまとめていきたいと思います。