5
3

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 3 years have passed since last update.

【Ruby on Rails】  NO FILEのmigrationファイル削除する

Last updated at Posted at 2020-05-21

##削除の流れ(まとめ)
1、マイグレーションファイルを復活

2、復活したマイグレーションファイルにRailsのバージョンを記載

3、マイグレーションファイルをdown statusに変更

4、マイグレーションファイルを削除

5、完了

詳細を以下に記載します。

##状況確認(ターミナル)

% bundle exec rails db:migrate:status                     


省略
   up     20200514113847  Add sessions table
   up     20200514143503  Change item buyer id to not null
   up     20200515081250  ********** NO FILE **********
   up     20200516055352  Rename size column to items
  down    20200516063953  Rename condition column to items
  down    20200516074758  Rename postage payer column to items

##ファイル復元(ターミナル)
ターミナルにてstatusコマンドで確認したIDを元に、以下を記述します。

% vim db/migrate/20200515081250_tmp.rb  

vimファイルに以下をコピペします。
( i で挿入モード → 以下をコピぺ → escで挿入モード終了 → :wq で保存終了)

class Tmp < ActiveRecord::Migration
  def change
  end
end

この時点でdown statusに変更しようとすると

% bundle exec rails db:migrate:down VERSION=20200515081250

エラーが起きます。

rails aborted!
StandardError: An error has occurred, all later migrations canceled:

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for:

##復活したマイグレーションファイルにRailsのバージョンを記載
原因はマイグレーションファイルがrailsのバージョンに対応していないことが原因のようです。
バージョンを記述します。

20200515081250_tmp.rb
class Tmp < ActiveRecord::Migration[5.2] #⬅︎[5.2]を追加
  def change
  end
end

##マイグレーションファイルをdown statusに変更(ターミナル)

% bundle exec rails db:migrate:down VERSION=20200515081250

ターミナルにてdownされているか確認

% bundle exec rails db:migrate:status                     

省略
   up     20200514113847  Add sessions table
   up     20200514143503  Change item buyer id to not null
  down    20200515081250  Tmp
   up     20200516055352  Rename size column to items
  down    20200516063953  Rename condition column to items
  down    20200516074758  Rename postage payer column to items
  down    20200516090645  Rename prefecture code column to items
  down    20200516101833  Add preparation day id to items

##削除

% rm -rf db/migrate/20200515081250_tmp.rb 

消去出来ているかステータスを確認します。

 % bundle exec rails db:migrate:status 

消去出来ています。

up     20200514113847  Add sessions table
   up     20200514143503  Change item buyer id to not null
   up     20200516055352  Rename size column to items
  down    20200516063953  Rename condition column to items
  down    20200516074758  Rename postage payer column to items
  down    20200516090645  Rename prefecture code column to items
  down    20200516101833  Add preparation day id to items
5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?