【问题标题】:type "geometry" does not exist on schema, but extension does模式上不存在类型“几何”,但扩展确实存在
【发布时间】:2019-08-19 19:58:38
【问题描述】:

注意:不是Postgis installation: type “geometry” does not exist的重复项

我正在尝试在名为 test 的新架构上使用 Postgis 几何列创建表。

首先我跑了:

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 架构时它可以正常工作。

这里有什么我遗漏的吗?

【问题讨论】:

    标签: sql postgresql postgis database-schema


    【解决方案1】:

    听起来 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 的任何架构。

    【讨论】:

    • 谢谢。是否可以在多个架构上安装扩展?
    • 据我所知没有。
    • 是的,你可以:DROP EXTENSION postgis; SET search_path to public; CREATE EXTENSION postgis;
    • @Kartik 这将删除扩展并在 public 架构中再次创建它。我认为在多个模式中不可能有posgis 扩展。但是你可以根据postgis.net/2017/11/07/tip-move-postgis-schema 更改架构
    猜你喜欢
    • 2023-01-20
    • 2021-07-11
    • 2020-09-26
    • 2014-03-21
    • 2019-06-15
    • 2017-04-02
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多