sql - 架构中不存在类型 "geometry",但扩展名存在

标签 sql postgresql postgis database-schema

注意:不是 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 模式时工作正常。

这里有什么我遗漏的吗?

最佳答案

听起来 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 的任何模式。

关于sql - 架构中不存在类型 "geometry",但扩展名存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55407904/

相关文章:

java - Oracle - 组合字段和搜索 - 性能

sql - 从另一个存储过程调用存储过程 SQL Server

arrays - Postgres : How to use arrays as stored procedure parameters efficiently?

postgresql - 强制 PostgreSQL 在函数中使用不同的模式

postgresql - 使用几何变换备份完整的 postgis 数据库

sql - EXISTS在Oracle中如何工作,它与IN有什么区别?

MySQL:范围基于外部表中的行

postgresql - OpenLayers 中的矢量投影

postgresql - 在 Debian 上安装 PostGis 时出现错误 "the PGXS Makefile cannot be found"

postgresql - 如何找到接触开始/结束节点的 LINESTRING