0
0

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 1 year has passed since last update.

PG::DuplicateColumn: ERROR:が出た時の対処法

Last updated at Posted at 2021-10-05

#このエラーの意味とは
PGはpagesのことみたいです。
Duplicateとは複製の意味です。Columnはカラムのことです。
これはテーブルに同じカラムが複製されている
同じ名前のカラムが存在しているのはダメだよと怒られているエラーです。

#どんな時エラーがでた?
railsでadd_〇〇_to_articles.rbの内容を書き直そうと思い、 rails g migration add_〇〇_to_articles 〇〇:string 実行
これはカラム追加コマンド```です。

⚫︎コマンドの説明はこの記事に載せてあります。
https://qiita.com/Hashimoto-Noriaki/items/c9d31577fd647ee8d08f

その後、 bundle exec rspec --tag focus (rspecのテスト)```を実行しました。
(このコマンドはテストをしたい内容を絞ってやるときに実行します。)
するとエラーが出て、

#省略

bin/rails:4:in `<main>'
Tasks: TOP => db:test:load => db:test:purge
(See full trace by running task with --trace)
Migrations are pending. To resolve this issue, run:

        rails db:migrate RAILS_ENV=test
No examples found.

このコマンドを実行
rails db:migrate RAILS_ENV=test
を実行。するとPG::DuplicateColumn: ERROR:のエラーが出てきました。

#解決策
先にお伝えしますが、実際自分が解決したやり方は違うので下で書くことと違います。
なぜ違うのかというと人によってエラーが出た状況が違うからです。

一般的には

rails db:migrate:reset

を使うといいみたいです。
このコマンドはデータベースを作成した時、migrationを実行してデータベースを作った後に、
作ったデータベースをmigration実行前に戻すコマンド
です。
rails db:resetだとデータベースごと消えてしまうのであまり推奨されないみたいです。

rails db:migrate:resetによってcreate(データベース作成)もされた状態で
空のデータベースの状態に戻せるので、またデータベースを構築していくことができます。

⚫︎参考記事
https://k-koh.hatenablog.com/entry/2020/05/29/174420
https://kirohi.com/rails_duplicate_error#i-4

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?