pg_restore:[archiver(db)]处理TOC时出错:

4

我使用pg_restore恢复了一个数据库,虽然数据已经被还原,但是却抛出了一些错误。这些错误的原因是什么?

以下是用于还原的命令:

pg_restore -U postgres -d newdb08aug19 -j5 remote

pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 7616;
 2606 36663585 FK CONSTRAINT card_history_cashcard_id_fk unify37
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "public.voucher" does not exist
    Command was: ALTER TABLE ONLY finance.card_history
    ADD CONSTRAINT card_history_cashcard_id_fk FOREIGN KEY (cashcard_id) REFERENCES pu...
pg_restore: [archiver (db)] Error from TOC entry 7614; 2606 36662489 FK CONSTRAINT card_history_coupon_id_fk unify37
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "public.cpn" does not exist
    Command was: ALTER TABLE ONLY finance.card_history
    ADD CONSTRAINT card_history_coupon_id_fk FOREIGN KEY (coupon_id) REFERENCES public...
pg_restore: [archiver (db)] Error from TOC entry 7615; 2606 36663406 FK CONSTRAINT card_history_domno_fk unify37
pg_restore: [archiver (db)] could not execute query: ERROR:  relation "public.ssgdom" does not exist
    Command was: ALTER TABLE ONLY finance.card_history
    ADD CONSTRAINT card_history_domno_fk FOREIGN KEY (domno) REFERENCES public.ssgdom(...

这些错误的原因是什么?

你确定转储文件和正在运行的PostgreSQL版本没有不匹配吗? - IVO GELOV
没有版本不匹配。正如@laurenz Albe所说,我已经从数据库中获取了单个模式的转储,并且一些约束来自其他模式被忽略了。因此,在还原过程中出现这些错误。 - akhilesh kedarisetty
1个回答

2
你只倾倒了数据库的一部分(可能使用类似-n finance的东西,这将仅倾倒该模式中的对象)。
因此,引用未包含在转储中的表的外键约束将在还原转储时导致错误消息。
除了约束之外,其他所有内容都将被正确还原。

好的,明白了。谢谢你提供的信息。 - akhilesh kedarisetty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接