Nathaniel's blog
Back to posts

Solve PostgreSQL "duplicate key violates unique constraint" error

Nathaniel LinJune 15, 20191 min read11 views
Solve PostgreSQL "duplicate key violates unique constraint" error

今天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了,各种出问题各种麻烦。

Share this post

Reactions