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

使用pg_restore恢复数据库时遇unexpected data offset flag 137错误求助

PostgreSQL恢复报错unexpected data offset flag 137的解决思路
  • 先确认备份文件完整性
    虽然用scp传输了大文件,但仍可能出现隐式损坏。在源Ubuntu服务器和本地macOS分别计算文件哈希值对比:

    • 服务器端执行:md5sum backupfile.dump
    • 本地执行:md5 backupfile.dump
      如果哈希值不一致,重新用rsync传输更可靠:rsync -avz user@remote:/path/backupfile.dump ./,避免scp的潜在传输问题。
  • 验证版本兼容问题
    PostgreSQL原则是低版本备份可被高版本恢复,但小版本跨版本也可能有格式细节差异,可尝试两种方式:

    • 本地安装PostgreSQL 13的pg_restore工具(macOS用brew:brew install postgresql@13),用该版本工具执行恢复命令,匹配备份时的版本。
    • 在源服务器重新导出为纯SQL格式:pg_dump -h localhost -U username -d dbname -f backupfile.sql,将.sql文件传到本地后用psql恢复:psql -h localhost -U username -d dbname -f backupfile.sql,纯SQL格式兼容性更强,适合跨版本恢复大库。
  • 简化恢复命令排查参数问题
    先去掉非必要参数,用最简命令尝试:pg_restore -h localhost -U username -d dbname backupfile.dump,排除--clean、--no-acl等参数组合可能引发的异常。同时确认备份文件是自定义格式(备份时用了-Fc),如果是目录格式备份,恢复命令需要对应调整为指定目录路径。

  • 排查本地环境问题

    • 检查本地磁盘空间,14G数据库恢复至少需要预留2倍以上的可用空间。
    • 查看本地PostgreSQL 14日志(brew安装路径一般为/usr/local/var/log/postgres.log),获取更详细的报错细节,比如权限不足、服务异常等。
    • 确保本地目标数据库dbname已创建,且执行恢复的用户username拥有超级用户权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:55:13