#rails db:rollbackができないときの解決方法
チーム開発中にアプリケーションのテーブルを修正することになりました。
dbをrollbackした際に以下のエラーが発生したので、、、、
rails aborted!
ActiveRecord::UnknownMigrationVersionError:
単純な作業内容ですが、備忘録として残します。
##rails db:rollbackを実行してみた
まず、テーブル修正のため、railsのマイグレーションファイルをデータベースからrollbackすることに
$ rails db:rollback
エラーが発生し、rollbackできない
rails aborted!
ActiveRecord::UnknownMigrationVersionError:
##一度、データベースごとrails db:drop
ただ、この方法はdb内のデータを全て消してしまうので、実行には注意が必要です。
Dropped database 'アプリケーション名 development'
Dropped database 'アプリケーション名'
そして、アプリケーション立ち上げ時と同様にrails db:createをしましょう
Created database 'アプリケーション名 development'
Created database 'アプリケーション名'
無事にアプリケーションのデータベースを作ることができました。
##マイグレーションファイルの修正を確認したら、rails db:migrateを実行
== 20200402084559 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0100s
-- add_index(:users, :email, {:unique=>true})
-> 0.0190s
-- add_index(:users, :reset_password_token, {:unique=>true})
-> 0.0078s
== 20200402084559 DeviseCreateUsers: migrated (0.0370s) =======================
== 20200407090006 CreateProducts: migrating ===================================
-- create_table(:products)
-> 0.0112s
== 20200407090006 CreateProducts: migrated (0.0113s) ==========================
== 20200409054432 CreateImages: migrating =====================================
-- create_table(:images)
-> 0.0174s
== 20200409054432 CreateImages: migrated (0.0175s) ============================
無事、マイグレートできた様子。
一応、rails db:migrate:statusでも確認
database: アプリケーション名 development
Status Migration ID Migration Name
--------------------------------------------------
up 20200402084559 Devise create users
up 20200407090006 Create products
up 20200409054432 Create images
statusがアップになっているので、データベースにも反映されているようだ。
downだと、マイグレーションファイルがpendingされているとエラーが出てしまうので注意。
念のため、sequelProで確認したところ、しっかりと反映されていました。
簡単なエラーでしたが、何かの役に立てば幸いです。