1.エラーメッセージの内容
2.エラーの原因
エラーの理由はmigrateし忘れてますよというものです。
考えられる理由は下記の3つです
1.単純にrails db:createのあとrails db:migrateし忘れている
2.すでにmigrationが完了している(up)状態でマイグレーションファイルを更新しrails db:migrateしてしまった
3.マイグレーションファイルの中に入れた外部参照キーが参照するテーブルがない状態でrails db:creatしてしまった(マイグレーションファイルの記述に誤りがある)
3.エラーの解決方法
1.単純にrails db:createのあとrails db:migrateし忘れている
マイグレーション実行の下記のコマンドを打ち込みましょう
$ rails db:migrate
2.すでにmigrationが完了している(up)状態でマイグレーションファイルを更新しrails db:migrateしてしまった
方法1 既存のテーブルを全削除し、再度マイグレーションの状態をupにする下記のコマンドを打ち込みましょう
$ rails db:migrate:reset
方法2 マイグレーションの最新のものだけ実行を取りやめて編集可能(down)にするコマンドrails db:rollbackののち、マイグレーションファイルの更新コマンドrails db:migrateを打ちましょう
$ rails db:rollback
$ rails db:migrate
※方法1と方法2の違いは処理速度(工程)の量の違いです。テーブルの数が多い場合は方法2としましょう。テーブルが数十程度なら方法1でも2でも大差はありません
※マイグレーションの状態を調べるコマンドは下記の通りです
$ rails db:migrate:status
3.マイグレーションファイルの中に入れた外部参照キーが参照するテーブルがない状態でrails db:creatしてしまった
①-1外部参照されるマイグレーションファイルを作成し、app/modelの中のファイルにアソシエーションを追記(または修正)する
①-2マイグレーションファイルから不必要な外部参照キーを消す
②上記①のどちらかの修正のあとに下記コマンドを打ち込みましょう
$ rails db:migrate:reset
4.すでにデータベースにレコードを入れてしまい、それを残したまま修正する方法(補足)
新たに追加したい項目のテーブルを作成し、本来追加したかったテーブルのidを外部キーとする方法をとりましょう。