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 ...
随机推荐
- centos7搭建postgresql主从(主备)架构
本篇介绍如何在centos7系统搭建一个postgresql主备集群实现最近的HA(高可用)架构.后续更高级的HA模式都是基于这个最基本的主备搭建. 节点规划 ip 主机名 用途 192.168.18 ...
- Java使用ConcurrentHashMap实现简单的内存式缓存
需求说明: 实际项目中我打算把用户和组织信息放到缓存中,基于此提出以下几点需求: 1.数据存储在内存中: 2.允许以键值对的方式存储对象类数据并带有过期策略: 3.不限制内存使用,但cache也不能给 ...
- 封装一些常用的 qt 控件
在 qt 中需要做 toast 效果和图片 tip 效果,故开发了下面一个类 后续会继续添加一些常用的控件 tool_tip.h #include <qlabel.h> #include ...
- 具备有效期的localStorage存储
具备有效期的localStorage存储 类方式 // 具备有效期的localStorage存储-类方式. class LocalStorageWrapper { // 存储数据到localStora ...
- STM32标准库内部Flash读写
STM32标准库FLASH读写 1. STM32内部FLASH介绍 STM32系列一般集成有内部flash,这部分内存可以直接通过指针的形式进行读取.但是由于内部flash一般存储为重要数据或程序运行 ...
- linux基本文件命令复习笔记
https://www.bilibili.com/video/BV1ex411x7Em/?p=4&spm_id_from=pageDriver&vd_source=92305fa48e ...
- 解密Spring中的Bean实例化:推断构造方法(上)
在Spring中,一个bean需要通过实例化来获取一个对象,而实例化的过程涉及到构造方法的调用.本文将主要探讨简单的构造推断和实例化过程,让我们首先深入了解实例化的步骤. 实例化源码 protecte ...
- Java 常用类 String类与其他结构之间的转换-----String 与 char[]之间的转换
1 /* 2 String 与 char[]之间的转换 3 4 String----> char[]:调用String的toCharArray() 5 char[] ---->String ...
- .Net 5.0 程序在 Linux 环境访问 SqlServer 2008R2 莫名报错:Connection reset by peer
〇.问题详情 同样的代码,在 Windows 上运行的好好的,拿到 CentOS 7 上运行就出现如下报错: [ex.message]:A connection was successfully es ...
- 全面解析 Redis 持久化:RDB、AOF与混合持久化
前言: 每次你在游戏中看到玩家排行榜,或者在音乐应用中浏览热门歌单,有没有想过这个排行榜是如何做到实时更新的?当然,依靠 Redis 即可做到. 在技术领域,我们经常听到「键值存储」 这个词.但在 R ...