解决达梦数据库加载libgeos_c.dll失败错误(-2870)的完整步骤
现象描述
1、安装达梦数据库后,使用SYSDBA用户登录,创建了GEO用户当作空间数据库用户。
2、使用Navicat连接达梦数据库,执行以下SQL语句报错。
SP_INIT_GEO_SYS(1);具体错误:
[HY000] 加载第三方库[libgeos_c.dll]失败,库文件缺失或版本太旧 (-2870)解决方法
1、进入达梦数据库官网,打400电话联系客服获取达梦数据库空间数据包。
咨询热线: 400-991-6599
技术咨询: dmtech@dameng.com
商务咨询: 400@dameng.com
windows、麒麟、centos空间数据包下载地址:https://pan.baidu.com/s/13vIR3Dni2iVkmCRGqr2N4Q?pwd=jfj7
windows空间数据包:dm8_20260319_x86_win_64_ent_8.1.4.80_pack48_spatial.zip
麒麟空间数据包:dm8_20251023_FTarm_kylin4_64_ent_8.1.4.116_pack8_spatial.zip
centos空间数据包:dm8_20251016_x86_centos7_64_ent_8.1.4.116_pack8_spatial.zip
2、把空间数据包解压到达梦安装目录的bin目录中即可。特别注意:在Linux系统上,一是要选择正确的空间数据包,二是要使用 chmod 赋予所有动态链接库执行权限。

Linux上达梦数据库添加空间数据包命令,仅供参考。
unzip dm8_20251016_x86_centos7_64_ent_8.1.4.116_pack8_spatial.zip
mv shapefilelib.so ./spatial/ ./dmdbms/bin/
cd dmdbms/bin
chown -R dmdba:dinstall *
chmod +x shapefilelib.so ./spatial/*3、在任务管理器中重启达梦数据库服务DmServiceDMSERVER。

4、连接达梦数据库执行以下sql语句进行测试。
SP_INIT_GEO_SYS(1);(1)在windows上可以使用navicat连接达梦数据库进行测试。

(2)在Linux上可以使用disql命令行工具进行测试。

说明:
启用空间数据库功能:SP_INIT_GEO_SYS(1);
停用空间数据库功能:SP_INIT_GEO_SYS(0);
常见问题
1、是否可以下载libgeos开源项目编译libgeos.dll和libgeos_c.dll来解决该问题?
经过测试,不行,仍然报加载第三方库[libgeos_c.dll]失败,库文件缺失或版本太旧的错误。
2、不自己编译libgeos,从msys2下载编译好的geos包行不行?
经过测试,不行。仍然报错:[HY000] 加载第三方库[libgeos_c.dll]失败,库文件缺失或版本太旧 (-2870)。
msys2包下载地址:https://packages.msys2.org/packages/mingw-w64-x86_64-geos
参考文档
GeoServer使用达梦当作空间数据库:https://eco.dameng.com/document/dm/zh-cn/start/GeoServer-development
libgeos源码:https://github.com/libgeos/geos
libgeos官网:https://libgeos.org/