命令:
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,但表仍成功还原。
pg_restore中的错误:
pg_restore:[存档程序 (db)] 无法执行查询:err-1:表 "test1" 不存在
命令是:DROP TABLE public.test1;
警告:还原时忽略错误:2
这是具有表添加/删除步骤的转储/还原功能的预期行为吗?
如果目标数据库的表仅与转储中的表部分重叠,则使用 pg_restore
可能会很痛苦。
使用 --clean
标志只能部分解决问题,但对于不存在的表,您仍可能遇到错误。
在我看来,最好的办法是删除目标数据库(或删除级联目标架构)并进行还原。
您可能想看一个类似的问题:pg_restore会覆盖现有表吗?