我应该创建一个空间数据库并安装 Postgres 并添加 PostGIS 扩展。
当我尝试添加类型为
public.geometry
的列时,它总是给出一条错误消息:
几何类型不存在
我对Postgres不熟悉,我不知道解决方案可能是什么。我尝试用谷歌搜索,但什么也没找到。
你
CREATE EXTENSION postgis;
吗?检查\dx
中的psql
。
您是否将 PostGIS 扩展放入其他架构中?检查
\dT *.geometry
中的psql
。
当您在目标数据库外部创建 postgis 扩展时,可能会发生这种情况,例如,您登录到数据库服务器而不指定数据库:
psql -h DB_HOST -U DB_USER
CREATE EXTENSION postgis;
\q
<apply dump here>
这发生在我身上。
修复:我需要从该空间中删除扩展,然后指定目标数据库,然后创建 postgis 扩展:
psql -h DB_HOST -U DB_USER DB_NAME
CREATE EXTENSION postgis;
\q
<apply dump here as DB_USER, onto DB_NAME>
只是为了介绍我遇到此错误的情况,以防它对其他人有帮助......
我将我的 public 模式重命名为 public_backup,然后将转储恢复到重新创建的 public 模式。
但是在重命名时,postgis 扩展仍与 public_backup 相关联。
您应该能够按照此处的官方 PostGIS 指南将其重新关联回新的public模式。
注意: 除非您像我一样使用 AWS RDS 托管实例(您将无权执行该技巧,因为它是作为锁定的“rdsadmin”角色安装的:
ERROR: permission denied for table pg_extension
最后,我放弃了重命名策略,只是覆盖了 public 模式。