マイグレーションファイルの "NO FILE" 解決法
NO FILE解決の備忘録
チーム開発で、pullして
rails db:migrate:status実行したら、NO FILE が出た。
Status Migration ID Migration Name
--------------------------------------------------
up 20200724104133 Devise create users
up 20200724113342 Create addresses
up 20200724122248 Create profiles
up 20200805042059 Create brands
down 20200805084757 Create items
down 20200805104151 Create images
up 20200806042032 ********** NO FILE **********
up 20200806042046 ********** NO FILE **********
1. NO FILEを適当なファイルに置き換える
touch db/migrate/20200806042032_hoge.rbで置き換えて、
rails db:migrate:statusで確認。
Status Migration ID Migration Name
--------------------------------------------------
up 20200724104133 Devise create users
up 20200724113342 Create addresses
up 20200724122248 Create profiles
up 20200805042059 Create brands
down 20200805084757 Create items
down 20200805104151 Create images
up 20200806042032 Hoge ← 変わってる
up 20200806042046 ********** NO FILE **********
2. 作成されたマイグレーションファイルに記述する。
class Hoge < ActiveRecord::Migration[6.0] def change end end
3. rails db:migrate:down VERSION=20200806042032
現在、upになってるので、上記のコマンドでdownに変える。
Status Migration ID Migration Name
--------------------------------------------------
up 20200724104133 Devise create users
up 20200724113342 Create addresses
up 20200724122248 Create profiles
up 20200805042059 Create brands
down 20200805084757 Create items
down 20200805104151 Create images
down 20200806042032 Hoge ← downに変わった
up 20200806042046 ********** NO FILE **********
4. 同様にもう一つの NO FILE も置き換える。
Status Migration ID Migration Name
--------------------------------------------------
up 20200724104133 Devise create users
up 20200724113342 Create addresses
up 20200724122248 Create profiles
up 20200805042059 Create brands
down 20200805084757 Create items
down 20200805104151 Create images
down 20200806042032 Hoge
down 20200806042046 Hoge2
5. 置き換えたファイルは必要ないので削除
補足:削除しなくても動作には影響しない。
6. rails db:migrateして終了