1.背景
共同開発でメンバーからプルリクのレビュー依頼を頂きました。
ローカルで動作確認を行おうと該当のブランチに切り替え、rails s
でサーバーを立ち上げたところ、
下記のエラーが表示されました。
ActiveRecord::PendingMigrationError (
Migrations are pending. To resolve this issue, run:
bin/rails db:migrate RAILS_ENV=development
You have 1 pending migration:
20210526151149_create_watches.rb
):
pendingとは保留中
という意味です。
2.使用環境
- mac.os バージョン10.15.6
- Ruby 2.7.2
- Rails 6.1.3.1
- psql (PostgreSQL) 12.6
3.エラーの原因
今回のプルリク分ではマイグレーションファイルの更新を含む実装を行っているのですが、私自身ローカル環境に取り入れた際にデータベースの更新をしていませんでした。
4.エラーの解決方法
①保留中のマイグレーションファイルを確認
エラーから、保留になっている該当のファイルを確認します。
ActiveRecord::PendingMigrationError (
Migrations are pending. To resolve this issue, run:
bin/rails db:migrate RAILS_ENV=development
You have 1 pending migration:
20210526151149_create_watches.rb
):
②マイグレーションの実行状況を確認
rails db:migrate:status
を実行します。
team_project % rails db:migrate:status
database: team_project_development
Status Migration ID Migration Name
--------------------------------------------------
up 20210411051744 Create texts
up 20210411052029 Create movies
..
down 20210526151149 Create watches
downは編集可能(マイグレーションが完了していない)の状態なので、ここでも
データベースが更新されていないことが確認できました。
※up:マイグレーションが完了している状態
③データベースを更新
rails db:migrate
を実行します。
team_project % rails db:migrate
== 20210526151149 Create Watches: migrating ====================================
-- create_table(:watches)
-> 0.0891s
-- add_index(:watches, [:user_id, :movie_id], {:unique=>true})
-> 0.0026s
== 20210526151149 CreateWatches: migrated (0.0918s) ===========================
データベースが更新され、無事サーバーを起動することができました!
5.まとめ
エラー画面に発生箇所と原因が記載されているので、落ち着いて対処したら大丈夫だと思いました!
参考にした記事では他の原因の記載もあるので、合わせて確認して頂くと、理解が深まるかと思います。
6.参考
1.web:ActiveRecord::PendingMigrationErrorの解決方法
2.web:RailsのMigrationに関する基本まとめ
7.最後に
記事の感想や意見、ご指摘等あれば伝えていただけるとありがたいです。
読んでいただき、ありがとうございました。