Postgis安装:类型"几何"不存在

yet*_*tty 84 postgresql geometry postgis

我正在尝试用Postgis创建表.我是通过这个页面来做的.但是当我导入postgis.sql文件时,我收到了很多错误:

ERROR:  type "geometry" does not exist
Run Code Online (Sandbox Code Playgroud)

有谁知道我该怎么办?

Kri*_*ota 168

我有同样的问题,但它通过运行以下代码修复

CREATE EXTENSION postgis;
Run Code Online (Sandbox Code Playgroud)

详细地,

  1. 打开pgAdmin
  2. 选择(单击)您的数据库
  3. 单击栏上的"SQL"图标
  4. 运行"CREATE EXTENSION postgis;" 码

  • 谢谢.顺便说一句,如果有人使用'psql'来运行此代码,请确保该角色具有'超级用户'属性/权限. (3认同)
  • 生命节省!我以为我已经设置了这个,所以我一直认为这是别的...... (2认同)
  • 请注意,这特定于您正在使用的特定数据库.它不是安装范围的. (2认同)
  • 我放了一个 pg_dump 回来,遇到了同样的问题。我的 postgis 扩展将它的数据放入一个名为“postgis”的自定义 SCHEME 中。我需要运行以下命令,一切又好了:`DO $$ BEGIN EXECUTE 'alter database '||current_database()||' set search_path = "$user", public, lookup, postgis'; 结尾; $$;` (2认同)

Bre*_*Nee 21

你可以从终端做到:

psql mydatabasename -c "CREATE EXTENSION postgis";
Run Code Online (Sandbox Code Playgroud)


Mik*_*e T 18

要让psql在第一个错误上停止,请使用-v ON_ERROR_STOP=1(默认情况下关闭的,这就是为什么你会看到很多错误).例如:

psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
Run Code Online (Sandbox Code Playgroud)

实际错误类似于"无法加载库X",这可能会因您的情况而异.作为猜测,请在安装sql脚本之前尝试此命令:

ldconfig
Run Code Online (Sandbox Code Playgroud)

(您可能需要使用前缀,sudo具体取决于您的系统).此命令更新所有系统库(例如GEOS)的路径.


lud*_*wig 18

如果加载了Postgis-Extension,那么由于缺少公共模式的搜索路径,您的SQL可能找不到几何类型.

尝试

SET search_path = ...,public;

在你的scsript的第一行.(替换...与其他所需的搜索路径)


Leo*_*ffo 8

如果您尝试在另一个架构上使用 postgis 类型而不是public.

如果您正在使用 postgis 2.3 或更高版本创建自己的架构并遇到此错误,请按照此处所述执行以下操作:

CREATE SCHEMA IF NOT EXISTS my_schema;
CREATE extension postgis;

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

ALTER EXTENSION postgis 
  SET SCHEMA my_schema;

ALTER EXTENSION postgis 
  UPDATE TO "2.5.2next";

ALTER EXTENSION postgis 
  UPDATE TO "2.5.2";

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

然后您可以继续使用 postgis 功能。


Bap*_*aux 5

您必须在数据库上启用扩展名。

psql my_database -c "CREATE EXTENSION postgis;"