类型 "geometry" 在模式中不存在,但扩展存在

type "geometry" does not exist on schema, but extension does

注意:不是 Postgis installation: type “geometry” does not exist

的重复

我正在尝试在名为 test 的新模式上使用 Postgis 几何列创建 table。

首先我运行:

SET search_path TO test;

然后当我尝试 运行 以下语句时:

CREATE TABLE spatials (id serial, name text, geo geometry, PRIMARY KEY (id));

我收到错误 type "geometry" does not exist

我已尝试 运行以下两种方法:

CREATE EXTENSION postgis;
--AND:
CREATE EXTENSION postgis SCHEMA test;

但两者都会导致错误 extension "postgis" already exists

请注意,它在使用 public 模式时工作正常。

这里有什么我遗漏的吗?

听起来 Postgis 安装在 public 架构中而不是 test 架构中。要验证您可以 运行

SELECT nspname
       FROM pg_extension ext
            INNER JOIN pg_namespace nsp
                       ON nsp.oid = ext.extnamespace
       WHERE ext.extname = 'postgis';

这将为您提供安装 Postgis 的架构。

然后模式限定类型 public.geometry 或安装 Postgis 的任何模式。