Just do IT

思うは招く

Rails で Migrations are pending エラーが出たらdb:migrateする

問題

Railsで開発中、rails sでサーバーを起動するとたまに次のエラーが出る。

ActiveRecord::PendingMigrationError
Migrations are pending. To resolve this issue, run: rails db:migrate RAILS_ENV=development

ActiveRecord::PendingMigrationError
ActiveRecord::PendingMigrationError

解決

「Migrations are pending(マイグレーションが保留中やで〜)」と言われているので、マイグレーションを実行してあげればOK。

rails db:migrate

それでもダメなら、そもそものデータベースが作られていない可能性があるので、データベースを作成してからまたrails db:migrateする。

rails db:create
rails db:migrate

再度サーバーを立ち上げれば表示されるはず。

rails s

原因

これはrails g model ~でモデルを作ったあと、マイグレーションを実行していないのが原因である場合が多い(個人的に)。

マイグレーション」とは、データベースのテーブルを設計すること。その設計書が「マイグレーションファイル」と呼ばれる。 Railsでは、モデル作成コマンドを打つとマイグレーションファイルが生成される。

マイグレーションファイルたち
マイグレーションファイルたち

マイグレーションが自動で行われることはなく、自分でrails db:migrateを実行する必要がある。

「モデルを作ったら、マイグレーション実行までがセット」と覚えておくとよい。

Active Record マイグレーション - Railsガイド