今天VPS到期了,迁移到了香港的一个数据中心,速度飞快、延迟超低,但是数据迁移中总是出现
PostgreSQL "duplicate key violates unique constraint"
的错误。通过一番
Google
和Stackoverflow
的查询算是了解了原因并解决了问题。原因
在创建了新表之后,数据的导入由于没有用
SQL
语句而是直接插入,因此一些自增的ID
的index
值对不上当前的最大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
了,各种出问题各种麻烦。