Back

Solve PostgreSQL "duplicate key violates unique constraint" error

Sun, Jun 16 20191 min read
Nathaniel

今天VPS到期了,迁移到了香港的一个数据中心,速度飞快、延迟超低,但是数据迁移中总是出现
PostgreSQL "duplicate key violates unique constraint"
的错误。通过一番GoogleStackoverflow的查询算是了解了原因并解决了问题。

原因

在创建了新表之后,数据的导入由于没有用SQL语句而是直接插入,因此一些自增的IDindex值对不上当前的最大ID,比如本来自增指向2,而由于导入数据ID已经应该是13了,这个时候就需要重新调整ID的指向位置,即:
ALTER SEQUENCE "XXXTable_ID_seq" RESTART WITH 14

常见问题

有时候可能已经有的SEQUENCE被我们不小心给删了,那么需要创建新的,那就用下面的指令
create SEQUENCE "Comment_ID_seq" START WITH 4
记得替换自己的表名和字段名以及数字
然后把对应字段的default设为
nextval('"Comment_ID_seq"'::regclass)
即可解决问题。

最佳解决方案

GUID吧各位,别用这个坑爹的整形数自增ID了,各种出问题各种麻烦。

Comments(0)

Continue with
to comment