gpt4 book ai didi

postgresql - pg_dump 输出包含重复项

转载 作者:行者123 更新时间:2023-11-29 12:27:43 24 4
gpt4 key购买 nike

我在一个数据库上运行了 pg_dump,并使用 pg_restore 恢复到一个新的、完全空的数据库中,我得到一个错误:

pg_restore: [archiver (db)] could not execute query: ERROR:  could not create unique index "bibleverses_userversestatus_pkey"
DETAIL: Table contains duplicated values.

检查恢复后的表会显示重复的主键值,这会阻止创建索引。

然而,检查 pg_dump 来自的原始数据库并没有显示这个重复的行 - 一切都是它应该的(并且必须是,因为约束)。

这怎么会发生,又该如何解决?

(这是一个持续性错误,不是一次性错误 - 再次运行 pg_dump 无法修复它)。

编辑:抱歉,完全忘记了版本信息:pg_dump/postgres 8.3.11、pg_restore 9.1.6

最佳答案

首先要弄清楚这一点,您将不得不花一些时间处理转储文件并找出发生了什么。我的直接猜测是可能两个备份连接在一起。但这里有一些事情要看:

  1. 给定表的 COPY 或 INSERT 语句是否多次出现?

  2. 您能否证明数据在给定的 COPY 或 INSERT 运行中被复制?

  3. 您能否同时使用 --inserts 和不使用 --inserts 来复制它?

如果你能证明它不是由将备份串联在一起引起的,我建议此时采取两个步骤:

  1. 将PostgreSQL升级到最新的9.1,再次测试,是否仍然出现

  2. 写一个详细的案例并跟进 pgsql-bugs 电子邮件列表。

我敢打赌它会像备份连接在一起一样,但我不能根据简陋的结论排除可能存在错误的可能性。

关于postgresql - pg_dump 输出包含重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15699781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com