You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pg_restore无法恢复.dump文件问题求助

解决pg_restore恢复Azure PostgreSQL备份的报错问题

我来帮你排查下这两个恢复命令的问题——你用pg_dump -Fc生成的是PostgreSQL的自定义格式备份,这个二进制格式的恢复有几个容易踩的坑,咱们一步步拆解:

第一个命令的问题

你执行的第一条恢复命令:

pg_restore -h test.postgres.database.azure.com -p 5432 -U test@test -C test.dump

这里有两个核心问题:

  1. 没有显式指定备份文件格式(虽然你导出用了-Fc,但恢复时明确声明格式能避免自动识别出错);
  2. 使用-C参数(自动创建目标数据库)时,必须先连接到一个已存在的数据库(比如默认的postgres库),否则pg_restore找不到执行创建库语句的入口。

第二个命令的问题

第二条命令你补了-Fc,但还是缺了关键的-d参数:

pg_restore -h test.postgres.database.azure.com -p 5432 -U test@test -C -Fc test.dump

-d用来指定你要连接的现有数据库(作为创建新库的“跳板”),没有它的话,pg_restore无法确定连接目标,自然会报错。

正确的恢复命令

你可以试试这条命令,先连接到默认的postgres数据库,让pg_restore自动创建test库并完成恢复:

pg_restore -h test.postgres.database.azure.com -p 5432 -U test@test -d postgres -C -Fc test.dump

如果目标环境里已经存在test数据库,你不需要-C参数,直接指定恢复到该库即可:

pg_restore -h test.postgres.database.azure.com -p 5432 -U test@test -d test -Fc test.dump

额外注意事项

  • 确保test@test用户有足够权限:比如用-C时需要创建数据库的权限,恢复时需要目标库的写入权限;
  • 检查Azure PostgreSQL的防火墙规则,确认执行恢复的机器IP在允许列表内;
  • 如果备份文件较大,加上-v参数能显示详细日志,方便定位具体卡住的步骤。

内容的提问来源于stack exchange,提问作者David Parsonson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:24:01