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))。