はじめに
railsで手動でデータを消してしまい、NO FILEが作られました。私はまだ初心者なので、さんざん検索したのですが、バージョンの違いなどで解決まで時間がかかったのでrails5.2.1 での解決方法を備忘録としてメモしておきます。(ついでに初投稿です!)
ミス等ありましたらご指摘ください。
参考: railsのrakeのmigrationファイルを削除しNO FILEとstatusに出た時の対処
本題
rails db:migrate:statusで確認
私の場合このように表示されました。これからさらにDBを追加していく時にNO FILEがあると邪魔だし、なんか嫌だし。。 消したい!
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
up 20200409041144 Create users
up 20200409041159 Add devise to users
up 20200409043157 Add username to users
up 20200409043957 Create tweets
up 20200409044148 Add text to tweets
up 20200410022026 Add user to tweets
up 20200410022800 Add userid to tweets
up 20200415052544 ********** NO FILE ********** <=これ
ひとまずファイルを与える
ファイル名はどうせ消すので何でも良いのですが今回はdummyとします。
$ touch マイグレーションのID_dummy.rb
私の場合だと
$ touch 20200415052544_dummy.rb
これをターミナルで実行すると、マイグレーションのID_dummy.rbのファイルができているはずです。
そしてそのファイルの中に下のコードをコピペ
class Dummy < ActiveRecord::Migration[5.2]
def change
end
end
ここでMigrationの隣にある[]内はバージョンを指定しているので必要に応じて変えてください。
rails5.2.1なら上のコードでOK
忘れず保存します。
もう一度rails db:migrate:statusで確認
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
up 20200409041144 Create users
up 20200409041159 Add devise to users
up 20200409043157 Add username to users
up 20200409043957 Create tweets
up 20200409044148 Add text to tweets
up 20200410022026 Add user to tweets
up 20200410022800 Add userid to tweets
up 20200415052544 Dummy
NO FILEだったのがDummyに変わりました!
準備完了!
downさせる
$rails db:migrate:down VERSION=マイグレーションのID
私の場合だと
$rails db:migrate:down VERSION=20200415052544
実行
== 20200415052544 Dummy: reverting ============================================
== 20200415052544 Dummy: reverted (0.0024s) ===================================
こんな感じに表示されましたか?もうファイルはdownの状態なので普通にDeleteすれば完了です。(ここはもちろん手動でOK)
結果
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
up 20200409041144 Create users
up 20200409041159 Add devise to users
up 20200409043157 Add username to users
up 20200409043957 Create tweets
up 20200409044148 Add text to tweets
up 20200410022026 Add user to tweets
up 20200410022800 Add userid to tweets
NO FILEが消えました! 以上です。
余談ですが、初心者の学生さんでプログラミングの話題を共有出来る方を探しています。もし良ければ、
twitter @chocola35175554までDMください!