当运行pg_restore --clean --dbname=my_database backup_file.sql
将数据库转储恢复到空数据库时,恢复会成功,但会显示以下警告消息:
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 161; 1259 16549 TABLE example_table root
pg_restore: [archiver (db)] could not execute query: ERROR: table "example_table" does not exist
Command was: DROP TABLE public.example_table;
WARNING: errors ignored on restore: 1
如消息所示,恢复成功.有错误,但有pg_restore
个声称忽略了它们.我还能够手动查询数据库,以验证在恢复后,我希望转储中的所有数据是否都存在于数据库中.
问题是上面的命令已退出,状态为1,而不是0.当以编程方式执行数据库恢复时(正如我打算在自动化此过程时所做的那样),这是有问题的,因为我的脚本需要能够可靠地确定恢复是否成功.
在确定退出状态时,有没有办法让pg_restore
个用户忽略警告?或者,我是否可以使用其他方法来获得更准确的成功/失败信息?如何恢复数据库并以编程方式可靠地确定恢复是否成功?
请注意,我目前正在使用PostgreSQL 9.1.