はじめに
railsでアプリを作っていたところ、不要なテーブルをマイグレートしてしまい、そのマイグレーションファイルを手入力で削除してしまった。
マイグレーションファイルをupの状態で消してしまうと
Status Migration ID Migration Name
--------------------------------------------------
up 20210116053731 ********** NO FILE **********
up 20210118091408 Devise create users
このように NO FILEという表示になってしまい、同じファイルを作ろうと思ったら、
「そのファイル名はすでにあるよ!」と怒られてしまい、途方に暮れたので、忘備録としてメモ。
結論
結論からいうと、別のマイグレーションファイルを作って、そこにファイルを消すような指示を出す、ということ。
今回だと、まず、dbディレクトリの配下にMigration IDを持ったファイルを作る。
上の例ならば、
「20210116053731_sample.rb」
というファイルを作る。
そして、その状態で
rails db:migrate:status
とターミナルに打ち込むと
Status Migration ID Migration Name
--------------------------------------------------
up 20210116053731 Sample
down 20210118091408 Devise create users
というようにファイル名が変わる。そして、その状態で
rails db:rollback
と打ち込むことで、マイグレーションファイルはdownの状態になる。
Status Migration ID Migration Name
--------------------------------------------------
down 20210116053731 Sample
down 20210118091408 Devise create users
そして、downになったことを確認したら、手動で先ほどのマイグレーションファイルを削除する。
そうすると、テーブルを消すことができる。
まとめ
Migration IDから新しくファイルを作って、そこから、マイグレートやロールバックをして削除する方法があったとはいろいろな方法がある物だと感心した。
90分ほど時間をとってしまったので、次は3分で解決できるな!