平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【rails】*** NO FILE ***というファイル表示が出て rollbackできない

久々のブログになってしまったので時間をつくり、文章を書く時間をつくりたいと思っているこの頃です。

<前段>
railsで別のブランチからmasterに変更してDBを反映させるために一回DBをrollbackを行ってmigrateし直しました。

そのあと再度作業していたブランチに戻り、ファイルをrollbackしようとした時にこのエラーが出ました。

以下のような表示です

  up     20200224063014  Devise create users
  up     20200224084346  Create items
  up     20200301085233  Add colum to user
  up     20200303044206  Remove column to user
  up     20200314174950  Create cards
  up     20200324033731  ********** NO FILE **********
  down    20200327165732  Create pictures
  down    20200328085002  Addseller id toitems

マスターを確認しても7つのmigrationファイルしかないのですが、なぜか原因不明の8つ目のNO FILEという名前のmigrationファイルができてました。

調べて見ると、rollbackせずにファイルの削除等を実施すると発生する事象でした。 ただ前述した作業とどう関連があるのか原因不明でしたが、とりあえず復旧させましたので対応を残しました。 https://remonote.jp/rails-migrate-status-no-file

結論からいうと、「20200324033731」のIDをもつマイグレーションをファイルを 手動で作成するという手段でした。
※内容は上記のサイト内にもありました

#20200324033731_dummy.rbというファイルを作成
#ファイルの中身を以下のようにしました
class Dummy < ActiveRecord::Migration[5.2]
  def change
  end
end

ファイルを作成し、migrationファイルのステータスを確認すると

  up     20200224063014  Devise create users
  up     20200224084346  Create items
  up     20200301085233  Add colum to user
  down    20200303044206  Remove column to user
  down    20200314174950  Create cards
  down    20200324033731  Dummy
  down    20200327165732  Create pictures
  down    20200328085002  Addseller id toitems

Dummyというファイルが認識されていますので、これを削除して解決しました。