DBAtlas · 数据库运维图谱

23505: unique_violation

PostgreSQL

含义

插入或更新的行违反了 UNIQUE 约束或 PRIMARY KEY;表中已存在相同的值。

原因

以相同的唯一键再次插入、向唯一列写入重复数据、手动插入导致序列值落后,或两个并发请求插入了相同的键。

解决方法

错误详情中的约束名和键值会显示是哪一行冲突。要更新已有行,使用 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 中打开 →

同一数据库的其他条目