GeoServer连接PostGIS失败报错postgis_lib_version()不存在如何解决?
创建数据存储出错,请检查参数。错误信息:无法获取连接:ERROR: function postgis_lib_version() does not exist Hint: No function matches the given name and argument types. You might need to add explicit type casts. Position: 8
问题产生原因
- 你配置GeoServer连接的目标PostgreSQL数据库未启用PostGIS扩展,
postgis_lib_version()是PostGIS扩展提供的内置核心函数,GeoServer创建PostGIS数据存储时默认调用该函数校验空间环境,函数不存在则直接触发连接失败。 - 少数情况是数据库已启用PostGIS扩展,但你给GeoServer配置的数据库连接账号没有扩展所在schema的访问权限,导致账号无法识别该函数。
- 极端情况为PostGIS与PostgreSQL版本不兼容,扩展安装失败导致函数缺失。
解决步骤
- 登录PostgreSQL,切换到你给GeoServer配置连接的目标业务数据库,不要在默认的postgres库中操作
- 执行扩展安装命令:
CREATE EXTENSION postgis; - 按需安装配套扩展(仅栅格、拓扑等场景需要,常规矢量数据存储可跳过):
CREATE EXTENSION postgis_raster; CREATE EXTENSION postgis_topology; - 校验安装结果:执行
SELECT postgis_lib_version();,正常返回PostGIS版本号即说明扩展安装成功 - 如执行命令提示权限不足,切换到postgres超级用户操作,或给连接账号授予对应权限:
GRANT USAGE ON SCHEMA public TO 你的GeoServer数据库连接用户名; - 若上述操作完成后仍报错,检查PostGIS与PostgreSQL的版本兼容性,卸载不匹配的版本后重新安装兼容版本即可。
内容的提问来源于stack exchange,提问作者Manuel Ndebele
相关产品推荐
相关产品推荐

