关于postgresql:Postgis安装:类型“ geometry”不存在 |
您所在的位置:网站首页 › 数据库42704错误 › 关于postgresql:Postgis安装:类型“ geometry”不存在 |
我正在尝试使用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 |