KingbaseES数据库安装PostGIS扩展GEOSUnaryunionPrec错误
一、问题现象:
KingbaseES V008R006C007B0012数据库集群安装PostGIS扩展插件报错。
create extension postgis;
ERROR: could not load iibrary "/opt/kingbase/cluster/kingbase/lib/postgis-3.so”:/opt/kingbase/cluster/kingbase/lib/postgis-3.so: undefined symbo1: GEOSUnaryunionPrec
二、适用版本:
KingbaseES所有版本。
三、排查过程(在集群所有节点执行):
1.使用ldd查询postgis-3.so库文件依赖是否有异常
ldd信息:
[kingbase@localhost lib]$ cd /opt/kingbase/cluster/kingbase/1ib/
[kingbase@localhost lib]$ ldd postgis-3.so
1inux-vdso.so.1(0x00007ffecb16a000)
libm.so.6 => /lib64/libm.so.6 (0x00007fc3426d1000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fc34251e000)
libgeos_c.so.1=>/opt/kingbase/cluster/kingbase/lib/1ibgeos_c.so.1 (0x00007fc3422e8000)
libproj.so.13 =>/opt/kingbase/cluster/kingbase/lib/1ibproj.so.13 (0x00007fc34206c000)
libjson-c.so.2 /opt/kingbase/cluster/kingbase/lib/1ibjson-c.so.2 (0x00007fc341e60000)
libprotobuf-c.so.1 =>/opt7kingbase/cluster/kingbase/lib/1ibprotobuf-c.so.1 (0x00007fc341c55000)
libxml2.so.2 =>/opt/kingbase/cluster/kingbase/lib/1ibxm12.so.2 (0x00007fc341906000)
libz.so.1 => /1ib64/libz.so.1 (0x00007fc3418ec000)
libdl.so.2 =>/1ib64/libd1.so.2 (0x00007fc3418e7000)
libsfCGALd.so.1 =>/opt/kingbase/cluster/kingbase/lib/libsFCGALd.so.1 (0x00007fc33ee21000)
libacc_s.so.1 => /lib64/1ibacc s.so.1 (0x00007fc33ee08000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc33ec47000)
/lib64/ld-1inux-x86-64.so.2 (0x00007fc342bf3000)
libgeos-3.9.1.so =>/opt/kingbase/cluster/kingbase/lib/1ibgeos-3.9.1.so(0x00007fc33e7de000)
libpthread.so.0 => /1ib64/libpthread.so.o (0xo0007fc33e7bd60o)
libCGAL.so.12 =>/opt/kingbase/cluster/kingbase/lib/libcGAL.so.12 (0x00007fc33e53e000)
libcgal Core.so.12 =>/opt/kingbase/cluster/kingbase/lib/libcGAL_core.so.12 (0x00007fc33e28a000)
libmpfr.so.6 => /opt/kingbase/cluster/kingbase/lib/libmpfr.so.6(0x00007fc33e010000)
libamp.so.10 => /opt/kingbase/cluster/kingbase/lib/libgmp.so.10 (0x00007fc33dd93000
经排查postgis-3.so库文件未发现异常。
2.KingbaseES数据库版本跟PostGIS版本不对应:
安装跟数据库不匹配的高版本PostGIS或者低版本的PostGIS也会导致类型的问题。
KingbaseES数据库版本:
KingbaseES V008R006C007B0012 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit
PostGIS扩展插件版本:
postgis-3.1.2_X86_V008R006C007B0012.tar.gz
经确认数据库版本跟PostGIS扩展插件版本对应。
3.系统存在其他版本的geos:
KingbaseES数据库PostGIS依赖geos都在数据库lib目录:
使用以下命令检查:
--rpm 命令
# rpm -qa | grep geo
geolite2 country 20181002 2.ky10.noarch
geocode-glib-devel-3.26.1-4.ky10.x86_64
geoclue2-2.5.6-1.p01.ky10.X86 64
geos-devel-3.6.1-12.oe1.x86 64
geocode-glib-help-3.26.1-4.ky10.noar ch
geos-3.6.1-12.oe1.X86_64
geoclue2-devel-2.5. 6-1.p01.ky10.x86_64
geocode-glib-3.26.1-4.KY10.X86 64
geolite2-city-20181002-2.ky10.noarch
--whereis geos-config
# whereis geos-config
geos-config:/usr/bin/geos-config /usr/1ocal/bin/geos-config
/usr/bin/geos-config --version
3.6.1
geos-config --version
3.7.0
经确认,当前系统包括数据库自带geos总共有3个不同版本的geos。
四、解决方法:
通过第三步排查过程,基本确定此问题是由于系统存在多个版本的geos导致。
1.通过设置环境变量指定使用的geos版本(推荐):
单独设置kingbase用户环境变量LD_LIBRARY_PATH指定使用跟数据库PostGIS版本匹配的geos:
--在.bashrc或者.bash_profile,添加以下环境变量保存退出
export LD_LIBRARY_PATH=/opt/kingbase/cluster/kingbase/1ib
添加LD_LIBRARY_PATH环境变量后执行以下命令:
source .bash_profile
--然后登录数据库再次执行
--此时执行以下命令创建成功
create extension postgis;
至此问题解决。
2.卸载系统安装的其他版本geos(不推荐):
使用rpm或者对应系统的命令,将系统whereis geos-config查询出来的geos都卸载或者删除。
删除后再次登录数据库进行PostGIS扩展插件的安装。
KingbaseES数据库安装PostGIS扩展GEOSUnaryunionPrec错误的更多相关文章
- Linux安装KingbaseES数据库 Unsupported major.minor version错误处理
Linux系统安装V008R006C007B0012版本KingbaseES数据库报错:Unsupported major.minor version 52.0 系统版本: [root@vm-10-3 ...
- 安装Stomp扩展时错误提示error: 'zend_class_entry' has no member named 'default_properties'
在安装stomp扩展时, 有这样的提示 error: 'zend_class_entry' has no member named 'default_properties' 交待下安装上下文, sto ...
- Linux安装imagick扩展出现错误:configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
在Linux(CentOS)上安装imagick扩展时,遇到如下错误: checking ImageMagick MagickWand API configuration program... che ...
- PostgreSQL 之 yum安装 postgis 插件
版本说明: CentOS7.5 + PostgreSQL 10.5 参考资源: https://www.postgresql.org/download/linux/redhat/ http://dow ...
- docker安装postgres并启用postgis扩展
镜像 查看所有镜像 docker images 可以直接拉取postgis镜像 docker pull postgis 也可以在已有镜像上安装postgres,再启用扩展: docker pull p ...
- CentOS7安装redis数据库及php-redis扩展
redis 首先把redis安装到服务器中 1.wget http://download.redis.io/redis-stable.tar.gz 下载redis源码 2. tar xvzf redi ...
- PHP安装amqp扩展 出现未装librabbitmq错误
这错误的原因是因为没有安装amqp的依赖包rabbitmq-c,需要先安装rabbitmq-c. 1.安装rabbitmq-c-0.7.1 没有安装就会提示上面的错误我选择的是最新版本0.7.1 wg ...
- Mysql数据库安装和配置
http://blog.csdn.net/pipisorry/article/details/46773507 Mysql数据库安装和配置.mysql语法.特殊符号及正则表达式的使用.MySQL备份与 ...
- windows下安装MongoDB扩展和配置
windows下安装MongoDB扩展和配置 1.下载mongoDB扩展,根据当前php版本进行下载 地址如下:http://pecl.php.net/package/mongo 我本地php版本是 ...
- linux下搭建lamp环境以及安装swoole扩展
linux下搭建lamp环境以及安装swoole扩展 一.CentOS 6.5使用yum快速搭建LAMP环境 准备工作:先更新一下yum源 我安装的环境是:apache2.2.15+mysql5 ...
随机推荐
- Android上的日志
Android的日志机制和普通的Java项目有一些不一样, 这里记录一下 安卓内建的Log 安卓应用类型(在build.gradle里定义 android {...})的模块, 可以直接引用内建的an ...
- Qt开发技术:QCharts(二)QCharts折线图介绍、Demo以及代码详解
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 如何拓展jwt返回的数据
默认的返回值仅有token,我们还需在返回值中增加username和id,方便在客户端页面中显示当前登陆用户 通过修改该视图的返回值可以完成我们的需求. 在user/utils.py中,创建 def ...
- 【算法day5】排序算法的稳定性及其汇总
稳定性 定义:值相同的元素在排序完成之后能否保证原有的次序不变(同样值的个体之间,如果不因为排序而改变相对次序,这个排序就是有稳定性的,否则就没有) 举例: [2,1,3,1]-->[1,1,2 ...
- 【Azure Developer】使用 Azure PowerShell 执行 Azure 表存储操作时遇见的4个问题
要使用PowerShell操作Azure的表存储,需要经过以下步骤: 1:必须安装 Az 和 AzTable 模块.安装命令为: #安装 Az 模块 Install-Module -Name Az - ...
- 万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简单的教程
万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简单的教程 目录 万字长文学会对接 AI 模型:Semantic Kernel 和 Kerne ...
- 文心一言 VS 讯飞星火 VS chatgpt (207)-- 算法导论15.4 4题
四.说明如何只使用表 c 中 2*min(m,n) 个表项及O(1)的额外空间来计算LCS的长度.然后说明如何只用 min(m,n) 个表项及O(1)的额外空间完成相同的工作.要写代码的时候,请用go ...
- Codeforces Round 922 (Div. 2)(A~D)补题
A题考虑贪心,要使使用的砖头越多,每块转的k应尽可能小,最小取2,最后可能多出来,多出来的就是最后一块k=3,我们一行内用到的砖头就是\(\frac{m}{2}\)下取整,然后乘以行数就是答案. #i ...
- .Net下的简易Http请求调用(Post与Get)
http请求调用是开发中经常会用到的功能.在内,调用自有项目的Web Api等形式接口时会用到:在外,调用一些第三方功能接口时,也会用到,因为,这些第三方功能往往是通过http地址的形式提供的,比如: ...
- 为什么现在连Date类都不建议使用了?
一.有什么问题吗java.util.Date? java.util.Date(Date从现在开始)是一个糟糕的类型,这解释了为什么它的大部分内容在 Java 1.1 中被弃用(但不幸的是仍在使用). ...