Pgpool-ii适配瀚高数据库高可用,pgversion: wrong major version: 0 错误解决

PGPOOL-II 4.1.x 适配Highgo 瀚高数据库 问题解决

在配置完瀚高流复制后,探索使用pgpool-ii 适配瀚高数据库时遇到 pgpool-ii 以下错误
pgversion: wrong major version: 0
致使 pgpool无法成功管理集群和节点,针对此问题:
1、下载了 pgpool-ii 4.3.x的源代码 找出位置 src/protocol/pool_pg_utils.c
在这里插入图片描述
注释解释 ” 提取主要版本号。我们创建主版本为“版本” 10。例如,对于 V10,主版本号将为 100,对于 *V9.6 将为 96,依此类推。对于 alpha 或 beta 版本,版本 * 字符串可能类似于“12beta1”。在这种情况下,我们假设 atoi(3) 足够聪明,可以在第一个不是有效数字的字符处停止(在我们的例子中为 ‘b’))。所以“12beta1”应该转换成12“
这里会获取 目标数据库PostgreSQL的版本号,使用 version 函数获取,但瀚高数据库的版本号为 Highgo enterprise xxxx 不是PostgreSQL 原有的版本序列;所以不被PGPOOL识别;
2、找到了问题的原因,采用临时的修改解决方案,修改此处 强行设置 瀚高依赖的PG版本;
在这里插入图片描述
3、重新编译打包安装;注意,编译时需要使用PostgreSQL 12 原生的lib 进行编译,否则编译不过,切记;
4、自此问题解决
总结: 其实此问题有个更好的解决方案,就是此处代码可以使用 $PG_VERSION 系统变量来获取,不写死版本号;当通过正常 version 函数获取到版本无法识别时候,就获取本机系统变量配置的PGVERSION 这样更合理;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值