エラー内容
ActiveRecord::PendingMigrationError
環境
- Rails 6.0.3
- psql (PostgreSQL) 12.2
概要
- このアプリケーションに対応するマイグレーションファイルをmigrateし忘れてますよ、というエラー
- 再度migrateすることで解決
原因
- db:create後にmigrateし忘れている
- すでに以前同じ名前でRailsアプリを作成とmigrateまでしていて、(何らかの事情で)アプリを消して、再度同じアプリ名で作成してmigrateしようとしたらエラーが発生
対策
1. db:create後にmigrateし忘れている
この場合は作成したアプリをbundle exec rake db:create
でDB作成後にmigrateし忘れているだけなので(マイグレーションファイルを変更するだけではmigrateされない)、
bundle exec rake db:migrate
をターミナルで入力することで解決
2.すでに以前同じ名前でRailsアプリを作成とmigrateまでしていて、(何らかの事情で)アプリを消して、再度同じアプリ名で作成してmigrateしようとしたらエラーが発生
私はこのパターンで「アプリ消してるのに何でmigrateできないの?」とちょっと戸惑っていました💦
Migrationファイル自体は(同じ名前なので)存在するが、今回作成したアプリとMigrationファイルが関連づけられていないことが原因なので、一度すでに作成されていたMigrationファイルを下記コマンドでリセットします。
rails db:migrate:reset
migrateをリセットできたので、再度migrateします。
bundle exec rake db:migrate
サーバーを再起動すれば解決です!
rails s
余談ですが、db:create
やdb:migrate
などデータベース関連の更新でうまくいかない時はサーバーをCtrl+C
で閉じてからやることをおすすめします(結構このパターンでのエラーもあるので注意)。
※migrateの状態が分からない時に調べるコマンド
rails db:migrate:status