postgres恢复报告虚假主键问题

时间:2016-09-06 13:04:17

标签: postgresql

我正在尝试使用以下命令恢复Postgres数据库:

pg_restore --verbose -h localhost -p 5436 -d my_database --format=c --clean --no-owner --no-privileges --no-tablespaces --jobs=1 Sunday2.backup

在恢复过程中,我看到了这个错误:

pg_restore: [archiver (db)] Error from TOC entry 2540; 0 16531 TABLE DATA foo_searchresult uoj9bg6vn4cqm
pg_restore: [archiver (db)] COPY failed for table "foo_searchresult": ERROR:  duplicate key value violates unique constraint "foo_searchresult_pkey"
DETAIL:  Key (id)=(63) already exists.
CONTEXT:  COPY foo_searchresult, line 1

我回到了源数据库并运行了这个:

select id, count(*)
from foo_searchresult
group by id
having count(*) > 1

一无所获。

现在,如果我只是尝试将该表恢复为全新的数据库:

pg_restore --verbose -h localhost -p 5436 -d brand_new_database --format=c --clean --no-owner --no-privileges --no-tablespaces --jobs=1 -t foo_searchresult Sunday2.backup
它回来了干净。

更新:我刚刚尝试将整个备份恢复到一个全新的数据库,它似乎已经过了foo_searchresult而没有问题。

(顺便提一下,源数据库是9.4,目标数据库是9.5,但我使用9.4或9.5发行版中的pg_restore得到了相同的结果。)

更新:所以似乎删除数据库,然后创建一个空数据库并重新加载(而不是使用--clean标志)解决了一大堆问题

无论如何,我的问题是“之前有人见过这个,或者知道如何修复它。”

0 个答案:

没有答案