关于postgresql:Postgis安装:类型“ geometry”不存在

您所在的位置:网站首页 数据库42704错误 关于postgresql:Postgis安装:类型“ geometry”不存在

关于postgresql:Postgis安装:类型“ geometry”不存在

2024-07-11 16:49| 来源: 网络整理| 查看: 265

我正在尝试使用Postgis创建表。 我在这个页面上做。 但是当我导入postgis.sql文件时,出现很多错误:

1ERROR:  TYPE"geometry" does NOT exist

有人知道我该如何解决吗?

我有同样的问题,但是通过运行以下代码已解决

1CREATE EXTENSION postgis;

详细,

打开pgAdmin 选择(单击)您的数据库 点击栏上的" SQL"图标 运行" CREATE EXTENSION postgis";码 相关讨论 谢谢。 顺便说一句,如果有人使用psql运行此代码,请确保该角色具有Superuser属性/特权。 节省生命! 我以为Id已经设置好了,所以我一直以为这是另一回事... 请注意,这特定于您正在使用的特定数据库。 它不是整个安装范围。 我放了一个pg_dump,并遇到了同样的问题。 我的postgis扩展将其数据放入名为postgis的自定义SCHEME中。 我需要运行以下命令,一切恢复正常:DO $$ BEGIN EXECUTE alter database ||current_database()|| set search_path ="$user", public, lookup, postgis; END; $$ ;

您可以从终端执行此操作:

1psql mydatabasename -c"CREATE EXTENSION postgis";

如果已加载Postgis-Extension,则您的SQL可能由于找不到公共架构的搜索路径而找不到几何类型。

尝试

SET search_path = ...,公开;

在您的scsript的第一行中。 (用其他必需的搜索路径替换...)

要使psql在第一个错误时停止,请使用-v ON_ERROR_STOP=1(默认情况下处于关闭状态,这就是为什么您看到许多错误的原因)。例如:

1psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql

实际错误类似于"无法加载库X"之类的错误,具体情况可能因您的情况而异。猜测一下,在安装sql脚本之前尝试以下命令:

1ldconfig

(根据您的系统,您可能需要加sudo作为前缀)。此命令将更新所有系统库的路径,例如GEOS。

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

psql my_database -c"CREATE EXTENSION postgis;"

您还需要确保尝试使用postgis扩展名的用户有权访问设置了postgis的架构(在我阅读的教程中称为" postgis")。

我只是遇到了这个错误,所以它得以解决,因为我只授予了新的用户访问数据库的权限。在我创建的数据库中,我运行了:

1GRANT ALL ON schema postgis TO USERNAME;

这解决了这个错误

此处的答案可能会解决您的问题,但是,如果您已经在数据库上启用了postgis,则问题可能是您试图将postgis表(带有geometry列)还原到架构中而不是启用postgis扩展名的位置。在pgAdmin中,您可以单击postgis扩展名,然后查看指定了哪个模式。如果尝试将具有"几何"列的表还原到其他架构,则可能会收到此错误。

我通过更改postgis扩展名解决了此问题-但是我不确定这是否一定是最好的方法。我所知道的是,它使我可以还原表。

相关讨论 在Postgis 2.3版之前,您可以将扩展名移至另一个架构,这为我解决了几次此问题

如果您尝试在另一个架构而不是public上使用postgis类型,也可能发生此错误。

如果您使用Postgis 2.3或更高版本创建自己的架构,并遇到此错误,请按以下说明执行以下操作:

1234567891011121314151617CREATE 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;

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

首先确保已安装(与pg版本:psql -V匹配)postgis:

1sudo apt install postgis postgresql-9.6-postgis-2.3

在创建表之前添加:

12db.engine.execute('create extension postgis') db.create_all()

要么...

1cursor.execute('create extension postgis')

在python程序中,使用来自psycopg2的当前光标。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3