pg_restore报[archiver]不支持版本(1.13),升级PostgreSQL后仍无效求Windows解决步骤
别着急,这个问题我之前帮朋友解决过——本质是你的pg_restore版本和备份文件的格式版本不匹配,1.13格式对应的是PostgreSQL 11及以上版本,你之前升级到9.6和10自然还是不行的。下面是Windows系统下一步一步的解决流程:
第一步:确认备份文件的对应版本
首先咱们先确认备份文件确实是用PostgreSQL 11+生成的:
- 如果你备份的是文本格式(后缀是
.sql),直接用记事本打开,开头几行就能看到-- PostgreSQL database dump后面跟着的版本号。 - 如果是自定义格式(后缀是
.dump或.backup),打开PowerShell,切换到备份文件所在目录,执行命令:
输出里会包含Get-Content 你的备份文件名.dump -Head 5PGDMP开头的内容,后面的数字就是格式版本(比如PGDMP110对应PostgreSQL 11),确认是11及以上就对了。
第二步:彻底卸载旧版本的PostgreSQL
为了避免版本冲突,需要把之前装的9.6和10版本完全卸载:
- 打开控制面板 → 程序和功能,找到所有带有“PostgreSQL”字样的条目(包括PostgreSQL 9.6、10,还有pgAdmin等配套工具),依次右键卸载。
- 手动删除残留目录:默认安装目录是
C:\Program Files\PostgreSQL,把里面旧版本的文件夹(比如9.6、10)删掉。 - 清理环境变量:右键此电脑 → 属性 → 高级系统设置 → 环境变量,在系统变量的
Path里,删掉旧PostgreSQL的bin目录路径(比如C:\Program Files\PostgreSQL\10\bin)。
第三步:安装兼容的PostgreSQL版本(11+)
建议直接安装最新的稳定版(比如16.x),向下兼容性更好:
- 下载Windows安装包:去PostgreSQL官网选对应你系统的64位安装包。
- 运行安装程序,注意几个关键设置:
- 安装目录默认即可,记好路径。
- 确保勾选Command Line Tools组件(
pg_restore就在这里面,默认是勾选的)。 - 设置超级用户(postgres)的密码,一定要记牢,后面恢复要用。
- 端口号默认5432,除非有其他程序占用再修改。
- 安装完成后,验证版本:打开CMD或PowerShell,输入:
输出应该显示11.x及以上版本,比如pg_restore --versionpg_restore (PostgreSQL) 16.2,就说明安装成功了。
第四步:执行数据库恢复
接下来就可以正常恢复了:
- 确保PostgreSQL服务启动:按下Win+R,输入
services.msc,找到postgresql-x64-16(对应你装的版本),如果状态不是“正在运行”,右键点击“启动”。 - 提前创建目标数据库:可以用pgAdmin(安装时默认带的)创建,或者在CMD里执行:
输入postgres的密码即可创建。createdb -U postgres 你的目标数据库名 - 切换到备份文件所在目录,执行恢复命令:
pg_restore -U postgres -d 你的目标数据库名 -v 你的备份文件名.dump-U postgres:使用超级用户连接,如果你改了用户名就换成对应的。-d:指定要恢复到的数据库名。-v:显示恢复的详细过程,方便排查问题。
- 输入密码后等待恢复完成,过程中如果有报错可以根据提示调整(比如权限问题、表已存在等)。
额外注意事项
- 自定义格式的备份(
pg_dump -Fc生成)必须用对应或更高版本的pg_restore,低版本完全无法识别高版本的自定义格式,这也是你之前升级到10还不行的原因。 - 不建议单独下载
pg_restore工具,因为它依赖PostgreSQL的其他库,单独用很容易出依赖错误,完整安装对应版本是最稳妥的。 - 恢复前一定要备份当前的数据库,避免意外数据丢失。
内容的提问来源于stack exchange,提问作者mastersom
相关产品推荐
相关产品推荐

