12
9

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.

Rails:migrationをrollback時にActiveRecord::UnknownMigrationVersionErrorが出たときの対処法

Last updated at Posted at 2020-04-27

概要

$ rails db:rollback$ rails db:migrate:down VERSION=マイグレーションID
時に以下のようなエラーで正しくrollback出来なかったときの対処法.

ActiveRecord::UnknownMigrationVersionError: 
No migration with version number マイグレーションID

原因

対象となるマイグレーションIDのマイグレーションファイルが見つからなく、downが出来ないよ、と怒られている.

対処法

消したいマイグレーションIDを見つける

$ rails db:migrate:status

そうすると

status    Migration ID    Migration Name
                             
  up      200427074212    ********** NO FILE **********

上記のように「NO FILE」となっているマイグレーションIDがあるはず.
この例の場合、「200427074212」です.

マイグレーションファイルを作る

「db/migrate」ディレクトリ内に先程確認したMigration IDのマイグレーションファイルを作成.

$ cd db/migrate
$ touch マイグレーションID_tmp.rb
(例: $ touch 200427074212_tmp.rb)

マイグレーションファイルを編集

作成したみグレーションファイルに以下の内容を書き込みます.
※ ActiveRecordのバージョンは他のマイグレーションファイルを見て確認してください.

200427074212_tmp.rb
class Tmp < ActiveRecord::Migration[バージョン]
  def change
  end
end

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

下記のコマンドでもう一度マイグレーションを確認します.

$ rails db:migrate:status
status    Migration ID    Migration Name
  ︙          ︙                ︙
  up      200427074212    Tmp

そうすると「Migration Name」の欄に「Tmp」と表示されるようになっているはず.
その後、下記のコマンドでこのマイグレーションファイルをのステータスを「up」から「down」の状態にしていきます.

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

そしてステータスが「down」になっていることを確認する.

$ rails db:migrate:status
status    Migration ID    Migration Name
  ︙          ︙                ︙
 down      200427074212    Tmp

「down」が確認できたら、マイグレーションファイルを削除します.

$ rm db/migrate/200427074212_tmp.rb

そしてstatusを確認すると

$ rails db:migrate:status
status    Migration ID    Migration Name
  ︙          ︙                ︙
 (先程のマイグレーションファイルが消えている)

これで成功!
rails db:rollback等できるようになっているはず!

12
9
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
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?