Arch系统PostgreSQL 15升级至16时pg_upgrade因PostGIS报错失败
PostgreSQL 15升级到16时pg_upgrade失败的问题分析
这不是pg_upgrade的代码bug,属于系统环境配置问题。
错误原因
从日志输出可以明确,pg_dump执行时找不到$libdir/postgis-3文件,核心问题是PostGIS扩展与新的PostgreSQL 16集群不兼容:
- 未为PostgreSQL 16安装对应的PostGIS扩展包
- 旧集群中安装的PostGIS扩展文件,在新集群的库目录下不存在,导致pg_dump无法读取相关依赖
解决方法
- 安装适配的PostGIS包:在Arch系统上,确保安装与PostgreSQL 16兼容的
postgis包(Arch官方仓库的postgis包会自动匹配当前默认PostgreSQL版本,若你是手动部署的PostgreSQL 16,需确认包版本兼容性)。 - 升级前卸载旧集群的PostGIS扩展:登录PostgreSQL 15的旧集群,对所有涉及的数据库执行卸载操作:
DROP EXTENSION IF EXISTS postgis_topology; DROP EXTENSION IF EXISTS postgis; - 重新执行升级命令:完成上述操作后,再次运行你之前的pg_upgrade命令:
pg_upgrade -b /opt/pgsql-15/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data - 升级后重建PostGIS扩展:登录PostgreSQL 16的新集群,为需要的数据库重新创建PostGIS扩展:
CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology;
内容的提问来源于stack exchange,提问作者Guillermo.D
相关产品推荐
相关产品推荐

