0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ActiveRecord::PendingMigrationErrorと表示された時の解決法!

Posted at

##記事の目的
rails db:migrateでマイグレーションできない問題に対しての対処法を共有すること。

状況

モデル作成時に
rails g model postsのようにpostとしなければならないところを複数形で書いてしまったため、一度削除した。その後、rails g model postでモデルを作りrails db:migrateをしたところ、
ActiveRecord::PendingMigrationError
というエラーが発生。

(もしかしたら削除後にbundle exec rails db:migrateを行なっていなかったことが原因の可能性あり。)

対処法

###ActiveRecord::PendingMigrationErrorって何?
簡単にいうと、未実行のmigrationがある場合に出てくるエラー。
自分の場合はrails db:migrateをしても解決しなかったのでデータベースをいじってみることにした。

###最初に試したこと
マイグレーションがcreatできてないと考え、まずはデータベースの中を$ rails dbconsoleのあと確認。

MySQL [app_development]> SHOW TABLES;
+---------------------------+
| Tables_in_app_development |
+---------------------------+
| ar_internal_metadata      |
| schema_migrations         |
+---------------------------+
2 rows in set (0.00 sec)

MySQL [app_development]> SHOW DATABASES; 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| app_development    |
| app_test           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.01 sec)

postテーブルはない...。
でもrails db:createは実行されている。

###対処できた処理
ここで、schema_migrationsをみてみる。

MySQL [app_development]> SELECT * FROM schema_migrations;
+----------------+
| version        |
+----------------+
| 20200202112028 |
+----------------+
1 row in set (0.00 sec)

####schema_migrationsとは!?
Railsのschema_migrationsはどのマイグレーションスクリプトまで実行済みなのかを記録するためのテーブル。

つまり、今回は実際にテーブルには反映されていないけどRailsは作ったよと言い張っている感じ。

このファイルがあると新しくモデルを作るときに邪魔なので削除する。

MySQL [app_development]> DELETE FROM schema_migrations WHERE VERSION=20200202112028 ;
Query OK, 1 row affected (0.06 sec)

確認すると、

MySQL [app_development]> SELECT * FROM schema_migrations;
Empty set (0.00 sec)

空になっている!!!!
exitで抜けてrails db:migrateすると、

== 20200202112028 CreatePosts: migrating ======================================
-- create_table(:posts)
   -> 0.2196s
== 20200202112028 CreatePosts: migrated (0.2264s) =============================

となり無事作成することができた!

終わりに

データベースでおかしいことがあればSHOWなどで中身を見る癖をつければトラブルシューティングになりそう!

おかしなところがあればフィードバックをください!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?