Rails4-migrate:rollbackやredoでマイグレーションバージョンが戻せない

記事公開日:
最終更新日:

This post is also available in: English-US (英語)

Rails4で特定のバージョンのマイグレーションファイルに戻したいが、db:migrate:redo や db:rollback で戻せないという状態の時のメモです。

1.まずはマイグレーションファイルのステータスの確認

bundle exec rake db:migrate:status

今回の場合、マグレーションファイルを削除していて db:migrate:redo や db:rollback ができなかったようだと分かりました。以下の例だと、 20161010194225 です。
(そもそも、マグレーションファイルを削除するのではなく、rails generate migration Remove... でテーブルやコラムを削除するべきなんですが...)

 Status   Migration ID    Migration Name
--------------------------------------------------
   ...
   up     20161022004812  Add something
   up     20161005164753  Remove something
   up     20161010194225  ********** NO FILE **********

2.データベースのschema_migrationsを編集する

Railsで使っているデータベースに、schema_migrations というテーブルがあります。この schema_migrations テーブルから該当のNO FILEの行(上記の例で言うと 20161010194225 )を削除します。

3.db:migrate:redo もしくは db:rollback を実行する

その後、再度 db:migrate:redo もしくは db:rollback を実行します。

bundle exec rake db:migrate:redo
bundle exec rake db:rollback

About
Amelt.net,LLCの創業者で、費用対効果の高い統合webマーケティングによりビジネスパートナーとして継続的にサポート。詳しいより。ブログの更新情報TwitterLinkedIn、またRSSfeedlyにてお知らせしていますのでフォローよろしくお願い致します。