DBAtlas · データベース運用アトラス

23505: unique_violation

PostgreSQL

意味

挿入または更新された行が UNIQUE 制約または PRIMARY KEY に違反している。同じ値がすでにテーブルに存在する。

原因

同じ一意キーでの再挿入、一意列への重複データの入力、手動挿入によるシーケンス 値の遅れ、または 2 つの同時リクエストによる同じキーの挿入。

対処方法

エラー詳細の制約名とキー値から、どの行が競合しているかがわかる。既存行を更新するには INSERT ... ON CONFLICT (my_column) DO UPDATE または DO NOTHING を使う。重複の検出: SELECT my_column, COUNT(*) FROM my_table GROUP BY my_column HAVING COUNT(*) > 1。シーケンス が遅れている場合: SELECT setval('seq_name', (SELECT MAX(id) FROM my_table))。

DBAtlas で開く →

同じデータベースの他の項目