【问题标题】:pg_restore: [archiver (db)] Error while PROCESSING TOC:pg_restore: [archiver (db)] 处理目录时出错:
【发布时间】:2019-12-15 23:19:10
【问题描述】:

我已经使用 pg_restore 恢复了一个数据库。我发现数据已恢复,但出现了一些错误。这些错误的原因是什么?

这是用于恢复的命令

pg_restore -U postgres -d newdb08aug19 -j5 远程

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 之间没有版本不匹配吗?
  • 不,没有版本不匹配。正如下面的@laurenz Albe 所说,我已经从数据库中转储了单个模式,并且其他模式几乎没有遗漏约束。所以,这就是恢复过程中出现这些错误的原因。

标签: postgresql pg-dump pg-restore


【解决方案1】:

您只转储了部分数据库(可能使用-n finance 之类的东西,它只会转储该架构中的对象)。

因此,转储中包含的引用表的外键约束将在转储恢复时导致错误消息。

除约束外的所有内容都将正确恢复。

【讨论】:

  • 是的,知道了。感谢您的信息。
猜你喜欢
  • 2018-08-28
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-10
  • 1970-01-01
  • 2022-11-22
相关资源
最近更新 更多