seedデータを投入した後に、新規作成をすると以下のようなエラーが発生する。
ActiveRecord::RecordNotUnique at /products/1/product_documents
PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "product_documents_pkey"
DETAIL: Key (id)=(5) already exists.
エラーの原因
seedデータでidを指定していたことが原因
実際のコードがこちら
2.times do |n|
ProductDocument.create!(id: n,
user_id: 8,
product_id: n + 1,
name: 'name',
content: 'content',
end
3.times do |n|
ProductDocument.create!(id: n + 2,
user_id: 9,
product_id: n + 3,
name: 'name',
content: 'content',
end
上記のように、ProductCocumentに対し2回に分けてデータを作る場合、2回目ではidがバッティングしてしまうと思ったため、idをid: n+2のように指定したがこれがエラーの発生源だった。
このid指定を消すと、、そもそもこんなふうにidを指定しなくてもidは連番で付番されたし、エラーも解消された!!
解決方法
それでもidを指定したいという場合は、rails cでコンソールを立ち上げ、以下のQiitaのようにすることで解消する!
PG::UniqueViolation: ERROR: duplicate key value violates unique constraintエラーの解決 - Qiita
PGデータベースにデータをインポートの後など、このエラーが発生する場合があります。PG::UniqueViolation: ERROR: duplicate key value violates …
コメント