This post is also available in: 日本語 (Japanese)
Rails4で特定のバージョンのマイグレーションファイルに戻したいが、db:migrate:redo や db:rollback で戻せないという状態の時のメモです。
Contents
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