踩坑日记-处理pg的自增长主键数据异常问题
tags: #postgresql #踩坑
备份迁移完 postgresql的表之后,插入数据的时候发现了报错。
DETAIL: Key (id)=(2) already exists.
这个实际上是由于自增长的id重复出现导致的,我们要刷新下自增长的id的值。
SELECT MAX(id) FROM duties;

可以看到最大的id已经是80242了,但是自增长的id还是2,这个就导致了这个问题
可以通过设置id自增长来解决这个问题。
select setval('tablename_id_seq', max(id)) from tablename;
实际例子:
SELECT setval('duties_id_seq', (SELECT MAX(id) FROM duties));
tablename_id_seq取得并不是id,取得是nextval的参数

[[postgist创建表]]