错误:类型“public.geometry”不存在

问题描述 投票:0回答:3

我应该创建一个空间数据库并安装 Postgres 并添加 PostGIS 扩展。

当我尝试添加类型为

public.geometry
的列时,它总是给出一条错误消息:

几何类型不存在

我对Postgres不熟悉,我不知道解决方案可能是什么。我尝试用谷歌搜索,但什么也没找到。

postgresql geometry postgis
3个回答
24
投票

CREATE EXTENSION postgis;
吗?检查
\dx
中的
psql

您是否将 PostGIS 扩展放入其他架构中?检查

\dT *.geometry
中的
psql


8
投票

当您在目标数据库外部创建 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>

0
投票

只是为了介绍我遇到此错误的情况,以防它对其他人有帮助......

我将我的 public 模式重命名为 public_backup,然后将转储恢复到重新创建的 public 模式。

但是在重命名时,postgis 扩展仍与 public_backup 相关联。

您应该能够按照此处的官方 PostGIS 指南将其重新关联回新的public模式。

注意: 除非您像我一样使用 AWS RDS 托管实例(您将无权执行该技巧,因为它是作为锁定的“rdsadmin”角色安装的:

ERROR:  permission denied for table pg_extension

最后,我放弃了重命名策略,只是覆盖了 public 模式。

© www.soinside.com 2019 - 2024. All rights reserved.