Azure PostgreSQL弹性服务器备份恢复报错:未找到文件头魔术字符串
问题解答
错误原因说明
这个错误不是由备份与恢复的数据库名称不同导致的,核心问题是pg_restore命令的参数使用错误:
-d参数的作用是指定要恢复到的目标数据库名称,而非备份文件路径。你当前的命令把备份文件名放到了-d的位置,导致pg_restore误将该文件名当作数据库名去连接,根本没有读取到实际的备份文件,因此触发了"找不到文件头魔术字符串"的错误。
修正后的命令
假设你的备份文件实际名为testxxxx.sql(替换为你生成的真实备份文件名),且已经在Azure PostgreSQL弹性服务器上提前创建好目标数据库testbackup1669029901,正确的命令格式如下:
pg_restore -v --no-owner -h psqlflex-server.postgres.database.azure.com -U abc -Fc -j 4 -d testbackup1669029901 /path/to/your/test$date.sql
关键注意点:
-d后紧跟的是目标数据库的名称,该数据库必须提前创建完成。- 命令末尾的是备份文件的完整路径(如果文件在当前工作目录下,直接写文件名即可)。
- 确保Azure文件共享已正确挂载到虚拟机,且虚拟机对备份文件拥有读取权限。
内容的提问来源于stack exchange,提问作者Ikteaja hsan
相关产品推荐
相关产品推荐

