問題発生までの流れ
RailsアプリにPry(送信パラメータの確認)を導入するため、Gemファイルにpry-railsを加えbundle installし、ローカルサーバーを再起動しました。(この時にmigration周りはいじっていません)
すると、PendingMigrationエラーが発生し、まだ実行していないmigrationがありますと表示されるようになってしまいました。
この時に指定されていたmigrationはデータベースを新規に作成するためのものですが、このファイルは既にmigrateしてデータベースを作成しデータも入れています。
なぜ既にmigrateしたファイルが未migrateだと言われるのか分かりませんでしたが、エラーのままでは作業ができないのでrails db:migrateしたところ、DuplicateTableエラーが発生、そのテーブルは既にあるだろと怒られてしまいました。
発生している問題・エラーメッセージ
An error has occurred, this and all later migrations canceled: PG::DuplicateTable: ERROR: relation "テーブル名" already exists
試したこと
試しにrails db:rollbackで1段階ロールバックさせてみたところ、上記の新規データベース作成のmigration(最新のもの)ではなく、そのひとつ前のmigrationがロールバックされました。
改めてrails db:migrateしても同様にDuplicateTableエラーで弾かれてしまいます。
自分ではデータベース周りに変更を加えてはいませんでしたし、エラーに指摘された通り既にテーブルは存在しているので何も変更したくはありません。
DuplicateTableエラーについて調べるとrails db:resetやrails db:migrate:resetを叩けという記事がたくさん出てきますが、データベースの中身を消したくはありません。
まだ本番環境にpushしたりはしていないのでローカルだけの問題ですが、解決できずに困っています。
###追記
rails db:migrate:statusを実行してみたところ、最新のデータベース作成の部分がdownとなっていました。
記録としては6月10日にmigrateした際にdownとなったようですが、当時エラーは出ていないはずです。
データベースが当時問題なく作成できていたため、このデータベースには数百行のデータが既に入っています。
このデータを消さずにエラーを解決したいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。