1.执行以下命令安装postGIS依赖项:
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION address_standardizer;
2.安装postgis
执行命令报错,CREATE EXTENSION postgis;
报错内容:ERROR: table spatial_ref_sys is not a member of extension "ganos_spatialref"
DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns.
然后报错如下图
polardb是11.2版本的
这个错误是因为在创建postgis扩展时,遇到了一个冲突的对象spatial_ref_sys。要解决这个问题,你可以尝试以下步骤:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION address_standardizer;
如果问题仍然存在,请检查你的PostgreSQL和PostGIS版本是否兼容。如果不兼容,你需要升级或降级其中一个组件以解决兼容性问题。
错误信息指出在尝试安装PostGIS扩展时,遇到了“spatial_ref_sys”表不属于“ganos_spatialref”扩展的问题。实际上,PostGIS在安装过程中需要用到“spatial_ref_sys”表,而这个错误提示表明在你的数据库中,“spatial_ref_sys”表可能已被其他名为“ganos_spatialref”的扩展占有或修改过。
解决这个问题的步骤如下:
首先,确认“ganos_spatialref”扩展是否存在以及它是否正确地引用了“spatial_ref_sys”表。如果不是必需的扩展,可以尝试卸载它:
DROP EXTENSION IF EXISTS ganos_spatialref CASCADE;
这里的CASCADE
关键字会删除与该扩展相关的所有对象,包括可能占用“spatial_ref_sys”表的部分。
清理遗留的“spatial_ref_sys”表问题(如果有):
-- 请谨慎操作,确认这个表不是其他重要扩展的一部分
DELETE FROM spatial_ref_sys WHERE false; -- 这行命令不会真正删除任何数据,只是测试是否有权限
如果第二步执行无误,你可以尝试重新创建“spatial_ref_sys”表或者安装PostGIS扩展:
安装PostGIS扩展:
CREATE EXTENSION IF NOT EXISTS postgis;
这条命令会在“spatial_ref_sys”不存在或者未被其他扩展占用的情况下安全地创建PostGIS所需的对象。
请确保在执行以上SQL命令前,你已充分了解它们的影响,并在必要时备份数据库。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。