PostGIS错误:类型"地理"不存在

Ste*_*eph 15 postgresql postgis

我刚刚将我的开发机器升级到Windows 7,因此重新安装了PostgreSQL和PostGIS.我按照Postgres网站上的建议使用了Postgres Plus安装程序,并按照本教程进行安装.我使用template_postgis创建了一个数据库,我当前正在开发的应用程序能够毫无问题地连接到数据库.

但是,我的旧代码无法Geography像以前那样使用PostGIS创建表.例如,当我尝试创建下表时:

CREATE TABLE test_area (
    id SERIAL PRIMARY KEY,
    name VARCHAR(1000),
    area GEOGRAPHY(POLYGON, 4326),
    start_time DATE,
    end_time DATE
)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR:  type "geography" does not exist
LINE 4:         area GEOGRAPHY(POLYGON, 4326),
                     ^
Run Code Online (Sandbox Code Playgroud)

如果我查看pgAdmin III的Object brower中的数据库,我会看到一堆Geometry函数,因此安装似乎已正确运行.我不确定我的问题是什么.安装程序是否可以仅安装PostGIS Geometry,但不能Geography

Har*_*ang 37

我之前也遇到过这个问题,但是帮助我的不是GIS网站上的答案.

我通过Homebrew安装了Postgresql,我也安装了Postgresql应用程序.然而,对于PostGIS,我通过Homebrew安装了它.

当我遇到这个问题时,我正在运行Postgresql应用程序,而不是在终端中运行它,所以你当然会得到这个PostGIS错误,因为Postgresql应用程序从未安装过PostGIS.一旦我在Terminal中启动Postgresql,它对我有用.

2014年9月25日更新:

您可能没有在数据库中为PostGIS创建扩展:

$ psql

psql> \c databaseName;

psql> CREATE EXTENSION Postgis;
Run Code Online (Sandbox Code Playgroud)


fra*_*ncs 5

可能postgis有问题,先看看“geography”类型是否存在?就像下面一样;

db_lbs=> \dT 地理

        List of data types
 Schema |   Name    | Description 
--------+-----------+-------------
 lbs    | geography | 
(1 row)
Run Code Online (Sandbox Code Playgroud)

对了,请注意当前的search_path;

我猜你的模式中不存在“地理”类型,它可能存在于公共模式中,所以先检查一下?


Ste*_*eph 4

我的问题在GIS 网站上得到了解答。我安装了 PostGIS 1.4,但Geography直到 PostGIS 1.5 才添加。所以我必须卸载现有的并重新安装 Postgres。不过,我很难找到包含 PostGIS 1.5 的版本。不过,我得到的建议是不要使用“Postgres Plus”专有软件,因为 EnterpriseDB 需要时间来移植最新的附加组件等。相反,我被重定向到 EnterpriseDB 网站上的常规 PostgreSQL 下载,该网站非常难找到。 这里是。64位版本没有附带PostGIS,所以我不得不使用32位版本,这有效。最后!