状況
マイグレーションステータスにNO FILEが存在しているので、消したい。
$ bundle exec rake db:migrate:status
database: ***/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20150708134153 ********** NO FILE **********
down 20150722185435 Devise create users
down 20150722190233 Add columns to users
railsのrakeのmigrationファイルを削除しNO FILEとstatusに出た時の対処を参考に対応する。
マイグレーションファイルを復活させる
上記のstatusコマンドで確認したIDを元に、以下のファイルを作成する。
$ vim db/migrate/(migration_file_id)_tmp.rb
class Tmp < ActiveRecord::Migration
def change
end
end
statusコマンドを再確認し、NO FILEが消えていることを確認する。
$ bundle exec rake db:migrate:status
database: ***/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20150708134153 Tmp
down 20150722185435 Devise create users
down 20150722190233 Add columns to users
マイグレーションファイルをdown statusに変更する
downに変更
$ bundle exec rake db:migrate:down VERSION=(migration_file_id)
ステータスがdownになっていることを確認する
$ bundle exec rake db:migrate:status
database: ***/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
down 20150708134153 Tmp
down 20150722185435 Devise create users
down 20150722190233 Add columns to users
マイグレーションファイルを削除する
削除
$ rm -rf db/migrate/20150708134153_tmp.rb
ステータスを確認
$ bundle exec rake db:migrate:status
database: ***/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
down 20150722185435 Devise create users
down 20150722190233 Add columns to users
履歴が消えた!