postgis:添加索引时提示“对访问方法 gist 数据类型 geometry 没有默认的操作符表“
问题
在对gis表的geom字段创建空间索引时,出现“对访问方法 "gist" 数据类型 geometry 没有默认的操作符表”的提示报错。
解决方案
按系列步骤进行排查并解决。
1.先确认已安装postgis
-- 查看postgis版本
SELECT postgis_full_version()
若安装了则会看到输出
若未安装,则需要在当前数据库启用postgis扩展。
-- 启用postgis扩展(每个数据库都需单独启用)
CREATE EXTENSION IF NOT EXISTS postgis;
启用成功后再用第1点即可查看到postgis版本。
2.查看所有已安装的扩展,里面应该是有postgis记录。
-- 查看所有已安装的扩展(按名称过滤)
SELECT extname, extversion
FROM pg_extension
WHERE extname = 'postgis';
查询到结果如下:
若未查询到记录,则需要重新安装postgis扩展
3.重新安装扩展
-- 删除 public 模式中的 PostGIS 对象(需要超级用户权限)
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;-- 重新授予权限(根据实际情况调整)
GRANT ALL ON SCHEMA public TO postgres;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO postgres;-- 安装扩展(强制覆盖)
CREATE EXTENSION postgis SCHEMA public;
重新安装后,重新运行第3点可查询到postgis记录了。
4.添加空间索引
现在重新添加空间索引,即可添加成功。
以上完毕。