CentOS 7.9更新postgresql13-contrib-13.9后postgres_fdw.so符号错误求助
PostgreSQL 13 postgres_fdw 符号未定义问题解决
问题根源
你遇到的undefined symbol: get_rel_all_updated_cols错误,本质是postgresql13-contrib包与主PostgreSQL服务版本不兼容导致的。get_rel_all_updated_cols是PostgreSQL 13.9版本新增的内部符号,若仅升级了postgresql13-contrib-13.9-1包但未同步升级主服务包,contrib包的postgres_fdw.so会因找不到该符号而加载失败。
解决方法
1. 确认版本不匹配情况
先检查当前PostgreSQL主服务版本:
psql -V
如果输出版本低于13.9,即可确认主包与contrib包版本不一致是问题诱因。
2. 同步升级所有PostgreSQL 13组件
使用yum升级所有postgres13相关包,确保版本统一:
sudo yum update postgresql13*
该命令会将主服务包、contrib包及其他依赖组件全部升级到最新兼容版本,消除符号依赖问题。
3. 重启PostgreSQL服务
升级完成后必须重启服务,让新的库文件生效:
sudo systemctl restart postgresql-13
4. 验证修复
执行以下SQL命令验证postgres_fdw是否能正常加载:
CREATE EXTENSION IF NOT EXISTS postgres_fdw;
若未报错,说明问题已解决。
临时回退方案(无法立即升级时)
如果暂时不能升级主服务包,可以将contrib包降级到与主版本匹配的版本:
- 查看系统中可用的旧版本contrib包:
yum --showduplicates list postgresql13-contrib
- 执行降级命令(替换版本号为你主服务对应的版本,比如
13.8-1.el7):
sudo yum downgrade postgresql13-contrib-13.8-1.el7
- 重启PostgreSQL服务。
内容的提问来源于stack exchange,提问作者Troy Meyerink
相关产品推荐
相关产品推荐

