PostGIS报错:function st_geomfromtext(unknown) does not exist 求助
解决ST_GeomFromText报错"function st_geomfromtext(unknown) does not exist"的问题
以下是几种常见的排查和解决方法:
检查PostGIS扩展是否启用
首先确认当前数据库是否安装了PostGIS扩展:SELECT * FROM pg_extension WHERE extname = 'postgis';如果返回空结果,需要先安装扩展(需超级用户权限):
CREATE EXTENSION postgis;若已安装仍报错,可能是当前会话的搜索路径未包含PostGIS所在模式(默认是
public),可以显式指定模式调用函数,或者调整搜索路径:-- 显式指定模式 ST_Contains(public.ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'), public.ST_GeomFromText('POINT(5 5)')) -- 调整会话搜索路径 SET search_path TO public, your_other_schemas;验证函数名称与大小写
PostgreSQL对未加双引号的标识符大小写不敏感,但极端情况下可能因环境配置导致识别问题,确保函数名拼写为ST_GeomFromText(遵循首字母大写的规范)。检查PostGIS版本兼容性
极旧版本的PostGIS可能存在函数差异,查询当前版本确认:SELECT postgis_version();若版本过旧,建议升级到稳定版本。
确认数据库连接正确性
确保你的查询是在安装了PostGIS的数据库上执行,而非连接到了其他未安装该扩展的数据库实例。
修改后的示例查询(添加模式前缀):
SELECT name, location, date, price_type, price, currency, category, amount, id FROM jobs WHERE status = 'ACTIVE' AND CAST(category AS TEXT ) IN ${categories} AND ST_Contains(public.ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'), public.ST_GeomFromText('POINT(5 5)'));
内容的提问来源于stack exchange,提问作者Brimstone
相关产品推荐
相关产品推荐

