PostgreSql:将新记录插入已恢复数据库时出现重复 pkey 错误 table

PostgreSql: duplicate pkey error when inserting a new records to a restored database's table

我使用命令 pg_dumppsql 来备份我的生产数据库并将其恢复到我的开发服务器中。 现在,当我尝试简单地向我的一个表中插入一条新记录时,我收到以下错误消息:

ERROR: duplicate key value violates unique constraint "communication_methods_pkey" DETAIL: Key (id)=(13) already exists.

怎么这个id已经被使用了?我需要更新一些东西才能使 id 增量计数器回到正确的轨道上吗?

听起来好像用于为每个 table 做主键的序列不在正确的值上。有趣的是 pg_dump 没有在其末尾包含序列 setval(我相信它应该包含)。

Postgres 建议使用以下过程来更正序列:https://wiki.postgresql.org/wiki/Fixing_Sequences

本质上,它会带您识别所有序列并创建 sql 脚本以 运行 将它们设置为比插入值的 ID 多 1。