当前位置: 首页 > java >正文

hgdbv9创建plpython3u插件后无法使用该插件创建函数

文章目录

  • 环境
  • 症状
  • 问题原因
  • 解决方案

环境

系统平台:银河麒麟 (X86_64)
版本:9.0

症状

此问题在如下版本和安装环境出现:

安装包:

hgdb-ee-9.0.1.000-build2401091440-28098d3-linux.x86_64.bin

OS版本:

银河麒麟服务器版V10sp3

复现步骤:

在业务库中创建plpython3u插件

create extension plpython3u ;

使用plpython3u创建对应函数时:

create or replace function public.convert_gbk_to_utf8(bytes bytea)
returns text
Language plpython3u
as $function$
"""
将GBK字节数组转化为uTF8文本
"""
#-*-coding:utf-8 -*-
def convert_gbk_to_utf8(bytes):return bytes.decode(encoding='gbk', errors='replace')
return convert_gbk_to_utf8(bytes)
$function$
;

对应会话进程会出现:

服务器意外地关闭了联接这种现象通常意味着服务器在处理请求之前
或者正在处理请求的时候意外中止
与服务器的连接已断开,正在试图重置: 完成。
hgdb-enterprise-9.0.1

问题原因

检查插件所依赖的库文件,发现该版本为python 3.11:

[highgo@localhost ~]$ ldd /home/highgo/hgdb-enterprise-9.0.1/lib/postgresql/plpython3.solinux-vdso.so.1 (0x00007fff9f55a000)libpython3.11.so.1.0 => /home/highgo/hgdb-enterprise-9.0.1/lib/postgresql/../libpython3.11.so.1.0 (0x00001553b7f89000)         <--该版本依赖于python 3.11版本libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00001553b7f4d000)libc.so.6 => /usr/lib64/libc.so.6 (0x00001553b7d95000)libdl.so.2 => /usr/lib64/libdl.so.2 (0x00001553b7d90000)libutil.so.1 => /usr/lib64/libutil.so.1 (0x00001553b7d8b000)libm.so.6 => /usr/lib64/libm.so.6 (0x00001553b7c08000)/lib64/ld-linux-x86-64.so.2 (0x00001553b8956000)

检查银河麒麟服务器版V10sp3自带版本为python3.7 :

[root@localhost ~]# find / -name libpython3*
/usr/lib64/libpython3.7m.so.1.0
/usr/lib64/libpython3.so
/usr/lib64/libpython3.7m.so

问题原因为系统自带python环境与插件所需的3.6版本不同。

解决方案

申请对应python版本plpython3u对应插件包并进行替换。 该步骤使用数据库安装用户highgo执行:

1、卸载原有plpython3u插件

drop extension plpython3u ;

2、备份原有lib、share、include目录

cd $HGDB_HOME
tar -czvf old_release.tar.gz  lib share include

3、解压释放新插件

tar -xvf new_release.tar.gz -C $HGDB_HOME

4、需要重启数据库(可选,一些情况下可能需要重新读取操作系统lib库文件)

pg_ctl restart 

5、重新安装插件

create extension plpython3u 

重新创建对应plpython3u函数,问题应当得到解决。

http://www.xdnf.cn/news/7633.html

相关文章:

  • 通过自签名ssl证书进行js注入的技术,适合注入electron开发的app
  • 解决Linux服务器MXNet安装与`npx`模块问题
  • GIS融合之路(九)-Cesium上的洪水模拟实现
  • 知识体系_数据分析挖掘_基尼系数
  • 教师可用的申报书——基于GAI的小学数学课堂跨学科支架设计与实践
  • 马尔可夫链(AI、ML):逻辑与数学的交汇
  • 产品经理面经(二)
  • Nginx配置记录访问信息
  • uthash是一个非常轻量级的库
  • 基于单片机的车辆防盗系统设计与实现
  • Xshell传输文件
  • Babylon.js学习之路《六、材质与纹理:为模型赋予真实的表面效果》
  • 道路运输安全员需要具备哪些职业道德?
  • 复用保护倒换和通道保护倒换有什么区别?
  • 链表原理与实现:从单链表到LinkedList
  • Java转Go日记(四十):Gorm更新
  • 获取文件夹下所有文件的名称
  • PyTest
  • 【Fifty Project - D29】
  • HarmonyOS应用开发入门宝典——项目驱动学习法实践
  • 第十节第一部分:常见的API:Math、System、Runtime
  • 一、Singal Tap 观察reg信号和wire信号
  • AI智能客户运营系统架构:从数据采集到精准触达的全链路技术方案
  • RK BT656隔行输入在运动的时候有锯齿(横纹)
  • JAVA基础——数组与二维数组
  • 添加currentSchema后,该模式下表报不存在(APP)
  • 打卡day31
  • Gartner《AI Infrastructure WithKubernetes参考架构》学习心得
  • 如何利用易境通代购商城系统快速搭建、装修商城页面?
  • 认知不确定性(Epistemic Uncertainty, EU)和随机不确定性(Aleatoric Uncertainty, AU)