0
1

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 1 year has passed since last update.

【Rails】NO FILEのマイグレーションファイルを削除する方法

Posted at

やりたいこと

マイグレーションファイルを確認したところ、完全に削除されていないマイグレーションファイルファイル(NO FILE)がたくさんあることに気づいた。
NO FILE状態のマイグレーションファイルを完全に削除したい。

解決方法

ターミナルで以下を実行

rails db:migrate:status

マイグレーションファイル一覧が表示される。
今回は一番上のマイグレーションファイルを削除することにする。(マイグレーションIDが20211112062400のファイル)

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20211112062400  ********** NO FILE **********
   up     20211112141152  ********** NO FILE **********
   up     20211113070815  ********** NO FILE **********
   up     20211120123020  ********** NO FILE **********
   up     20211201082728  ********** NO FILE **********
   up     20211203073311  ********** NO FILE **********
   up     20211211052422  Create messages
   up     20211215073022  ********** NO FILE **********
   up     20211216131616  ********** NO FILE **********
   up     20211217053015  ********** NO FILE **********
   up     20211223073833  Devise create admin users
   up     20211223073838  Create active admin comments
   up     20211224044540  Drop table users
   up     20211224053115  Devise create users
   up     20211224081811  Add column to users

左側のStatusに注目。全てupと表示されていることがわかる。
すでに実行済みのマイグレーションファイルはupと表示されるので、全てのファイルは実行済みの状態である。
upの状態のままだと削除で傷、upからdownに切り替える必要がある。コマンド上で

rails db:migrate:down VERSION=マイグレーションID

を実行すればdownになるのだが、今はファイル名がNO FILEになっているので、新たに削除用のマイグレーションファイルを作成する必要がある。削除したいマイグレーションファイルのマイグレーションIDをコピーし、

touch db/migrate/20211112062400_hoge.rb

を実行。(hogeはダミーネームなので、名前は適当でOK)

作成されたマイグレーションファイルはの中身は空なので、以下を記述。

20211112062400_hoge.rb
class Hoge < ActiveRecord::Migration[6.0]
  def change
  end
end

次に、$ rails db:migrate:statusを実行し、マイグレーションファイル名がNO FILEからHogeに変更されていることを確認。

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20211112062400  Hoge
   up     20211112141152  ********** NO FILE **********
   up     20211113070815  ********** NO FILE **********
   up     20211120123020  ********** NO FILE **********
   up     20211201082728  ********** NO FILE **********
   up     20211203073311  ********** NO FILE **********
   up     20211211052422  Create messages
   up     20211215073022  ********** NO FILE **********
   up     20211216131616  ********** NO FILE **********
   up     20211217053015  ********** NO FILE **********
   up     20211223073833  Devise create admin users
   up     20211223073838  Create active admin comments
   up     20211224044540  Drop table users
   up     20211224053115  Devise create users
   up     20211224081811  Add column to users

これでマイグレーションIDを指定してupからdownに切り替えることができる。
以下のコマンドを入力すると、

rails db:migrate:down VERSION=20211112062400

これでdown状態にすることができる。

Status   Migration ID    Migration Name
--------------------------------------------------
  down    20211112062400  Hoge
   up     20211112141152  ********** NO FILE **********
   up     20211113070815  ********** NO FILE **********
   up     20211120123020  ********** NO FILE **********
   up     20211201082728  ********** NO FILE **********
   up     20211203073311  ********** NO FILE **********
   up     20211211052422  Create messages
   up     20211215073022  ********** NO FILE **********
   up     20211216131616  ********** NO FILE **********
   up     20211217053015  ********** NO FILE **********
   up     20211223073833  Devise create admin users
   up     20211223073838  Create active admin comments
   up     20211224044540  Drop table users
   up     20211224053115  Devise create users
   up     20211224081811  Add column to users

最後に以下のコマンドを実行して、マイグレーションファイルを削除する。

rm -rf db/migrate/20211112062400_hoge.rb

$ rails db:migrate:statusを実行すると、

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20211112141152  ********** NO FILE **********
   up     20211113070815  ********** NO FILE **********
   up     20211120123020  ********** NO FILE **********
   up     20211201082728  ********** NO FILE **********
   up     20211203073311  ********** NO FILE **********
   up     20211211052422  Create messages
   up     20211215073022  ********** NO FILE **********
   up     20211216131616  ********** NO FILE **********
   up     20211217053015  ********** NO FILE **********
   up     20211223073833  Devise create admin users
   up     20211223073838  Create active admin comments
   up     20211224044540  Drop table users
   up     20211224053115  Devise create users
   up     20211224081811  Add column to users

完全に削除された!
##まとめ
マイグレーションファイルはただ手動で削除してもローカルデータに残ったままで、完全に削除するには今回のような操作を行う必要があるので、DB関連のファイルはより慎重に扱う必要があると感じました。。
まだ多くのNO FILEが残っているので、上記の手順で削除していこうと思います!

Qiita初投稿なので、見づらい部分があるかと思いますが、同じ箇所でつまづいている方に参考になれば幸いです!

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?