我正在尝试使用Postgis创建表。我这样做page。但是当我导入postgis.sql文件时,我遇到了很多错误:
ERROR: type "geometry" does not exist
有人知道我该如何解决它?
答案 0 :(得分:146)
我遇到了同样的问题,但通过运行以下代码
解决了这个问题CREATE EXTENSION postgis;
详细说明,
答案 1 :(得分:19)
要让psql在第一个错误上停止,请使用-v ON_ERROR_STOP=1
(off by default,这就是您看到很多错误的原因)。例如:
psql -U postgres -d postgis -v ON_ERROR_STOP=1 -f postgis.sql
实际错误类似于"无法加载库X",这可能因您的情况而异。猜测一下,在安装sql脚本之前尝试这个命令:
ldconfig
(根据您的系统,您可能需要以sudo
为前缀)。此命令更新所有系统库的路径,例如GEOS。
答案 2 :(得分:18)
如果加载了Postgis-Extension,那么由于缺少公共模式的搜索路径,您的SQL可能找不到几何类型。
尝试
SET search_path = ...,public;
在scsript的第一行。 (将...替换为其他所需的搜索路径)
答案 3 :(得分:17)
您可以从终端进行:
psql mydatabasename -c "CREATE EXTENSION postgis";
答案 4 :(得分:3)
您必须在数据库上启用扩展程序。
psql my_database -c "CREATE EXTENSION postgis;"
答案 5 :(得分:2)
您还需要确保尝试使用postgis扩展名的用户有权访问设置了postgis的架构(在我阅读的教程中称为“ postgis”)。
我只是遇到了这个错误,并且因为我只授予了新用户访问数据库的权限而得以解决。在创建的数据库中,我运行:
grant all on schema postgis to USERNAME;
这解决了这个错误
答案 6 :(得分:1)
这里的答案可以解决您的问题,但是如果您已经在数据库上启用了postgis,则问题可能是您尝试将postgis表(带有几何列)还原到除postgis扩展名之外的模式中已启用。在pgAdmin中,您可以单击postgis扩展名并查看指定的架构。如果您尝试将具有几何列的表还原到其他架构中,则可能会出现此错误。
我通过改变我的postgis扩展来解决这个问题 - 但是我不确定这是否是最好的方法。我所知道的是它让我恢复了桌子。
答案 7 :(得分:0)
或者...
cursor.execute('create extension postgis')
使用psycopg2中的当前光标在你的python程序中。
答案 8 :(得分:0)
首先确保已安装(与pg版本:psql -V匹配)postgis:
@SerializedName("message")
public String message;
@SerializedName("code")
public String code;
在创建表之前添加:
sudo apt install postgis postgresql-9.6-postgis-2.3
答案 9 :(得分:0)
如果您尝试在另一种模式而不是public
上使用Postgis类型,也会发生此错误。
如果您使用Postgis 2.3或更高版本创建自己的架构,并遇到此错误,请执行以下as stated here:
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;
然后,您可以继续使用Postgis功能。