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のようにすることで解消する!
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UEclM0ElM0FVbmlxdWVWaW9sYXRpb24lM0ElMjBFUlJPUiUzQSUyMCUyMGR1cGxpY2F0ZSUyMGtleSUyMHZhbHVlJTIwdmlvbGF0ZXMlMjB1bmlxdWUlMjBjb25zdHJhaW50JUUzJTgyJUE4JUUzJTgzJUE5JUUzJTgzJUJDJUUzJTgxJUFFJUU4JUE3JUEzJUU2JUIxJUJBJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz0yODAzMGZhYjliMDVlOWU5NGY5NWQ5ODY5MGFlOWY2NQ&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBZdXRvWWFzdW5hZ2EmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWNjOTRmZGM4MjViNmUyYTA3YjYwMTYzZGJlMTQ0ZGMw&blend-x=142&blend-y=486&blend-mode=normal&s=28e6267c4855c179d7e52bbc7740940b)
PG::UniqueViolation: ERROR: duplicate key value violates unique constraintエラーの解決 - Qiita
PGデータベースにデータをインポートの後など、このエラーが発生する場合があります。PG::UniqueViolation: ERROR: duplicate key value violates …
コメント