LoginSignup
0
0

More than 3 years have passed since last update.

【Rails】ActiveRecord::PendingMigrationErrorが出たときの対処法

Last updated at Posted at 2020-05-15

エラー内容

ActiveRecord::PendingMigrationError
image.png

環境

  • Rails 6.0.3
  • psql (PostgreSQL) 12.2

概要

  • このアプリケーションに対応するマイグレーションファイルをmigrateし忘れてますよ、というエラー
  • 再度migrateすることで解決

原因

  1. db:create後にmigrateし忘れている
  2. すでに以前同じ名前で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:createdb:migrateなどデータベース関連の更新でうまくいかない時はサーバーをCtrl+Cで閉じてからやることをおすすめします(結構このパターンでのエラーもあるので注意)。

※migrateの状態が分からない時に調べるコマンド
rails db:migrate:status
0
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
0
0