模式中不存在类型“几何”,但扩展名存在

rob*_*y22 1 sql postgresql postgis database-schema

注意:不是Postgis 安装的副本:类型“几何”不存在

我正在尝试使用 Postgis 几何列在名为test.

首先我跑了:

SET search_path TO test;
Run Code Online (Sandbox Code Playgroud)

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

CREATE TABLE spatials (id serial, name text, geo geometry, PRIMARY KEY (id));
Run Code Online (Sandbox Code Playgroud)

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

我试过运行以下两个:

CREATE EXTENSION postgis;
--AND:
CREATE EXTENSION postgis SCHEMA test;
Run Code Online (Sandbox Code Playgroud)

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

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

有什么我在这里想念的吗?

sti*_*bit 5

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

SELECT nspname
       FROM pg_extension ext
            INNER JOIN pg_namespace nsp
                       ON nsp.oid = ext.extnamespace
       WHERE ext.extname = 'postgis';
Run Code Online (Sandbox Code Playgroud)

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

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