如何匹配pg_restore版本与dump文件?解决版本1.15不兼容问题
关于pg_restore报错"unsupported version (1.15)"的问题解答
问题描述
运行pg_restore时遇到如下错误:
pg_restore: error: unsupported version (1.15) in file header
当前Docker容器使用postgres:14.10镜像,版本信息如下:
root@c33fdb601eab:/# postgres --version postgres (PostgreSQL) 14.10 (Debian 14.10-1.pgdg120+1) root@c33fdb601eab:/# pg_restore --version pg_restore (PostgreSQL) 14.10 (Debian 14.10-1.pgdg120+1)
疑问:
- 版本1.15是什么意思?它是否代表*.sql dump文件的版本?
- 如果是,如何确定使用哪个pg_restore版本来恢复该文件?
解答
1. 版本1.15的含义
这个1.15是pg_dump生成的自定义/归档格式备份文件的内部版本号,并非普通SQL文本备份的版本——只有用pg_dump -Fc(自定义格式)或-Ft(tar格式)生成的二进制备份文件才会携带该头部版本标识,纯SQL文本格式备份不会出现这类报错。
2. 内部版本号与PostgreSQL版本的对应关系
PostgreSQL的每个大版本会对应特定的pg_dump内部版本号,1.15对应的是PostgreSQL 15版本生成的自定义格式备份。
3. 匹配pg_restore版本的方法
- 核心规则:低版本的pg_restore无法兼容恢复高版本生成的自定义/归档格式备份,必须使用≥备份生成版本的pg_restore工具。
- 具体解决方式:
- 直接使用PostgreSQL 15版本的pg_restore(可拉取
postgres:15系列镜像运行); - 若无法升级工具,可要求备份方用
pg_dump -Fp(纯文本格式)重新生成备份,SQL文本格式可跨版本恢复(需注意不同版本间的SQL语法兼容性)。
- 直接使用PostgreSQL 15版本的pg_restore(可拉取
内容的提问来源于stack exchange,提问作者Dušan Maďar
相关产品推荐
相关产品推荐

