12

命令:

bin/pg_dump -b -o -Fc -Z 0 -p 5333 -U user template1 -f db.dump
bin/pg_restore -c  -h localhost -p 5333 -U user -d template1 db.dump 

遵循的步骤:

  1. 向数据库添加新表并进行转储

  2. 删除新添加的表

  3. 尝试使用转储文件恢复

  4. 恢复以代码 1 退出,但表仍然成功恢复。

pg_restore 中的错误:
pg_restore:[archiver (db)] 无法执行查询:err-1:表“test1”不存在
命令是:DROP TABLE public.test1;
警告:还原时忽略错误:2

这是带有表添加/删除步骤的转储/恢复功能的预期行为吗?

4

1 回答 1

0

pg_restore如果目标数据库的表仅与转储中的表部分重叠,则使用可能会让人头疼。

使用该--clean标志只能部分解决问题,但您可能仍会遇到不存在表的错误。

在我看来,你最好的办法是删除你的目标数据库(或删除级联目标模式)并进行恢复。

您可能想查看一个类似的问题:pg_restore 会覆盖现有表吗?

于 2018-09-26T10:49:02.477 回答