PostGIS错误:类型“地理”不存在

时间:2011-08-09 18:58:24

标签: postgresql postgis

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

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

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

我收到以下错误:

ERROR:  type "geography" does not exist
LINE 4:         area GEOGRAPHY(POLYGON, 4326),
                     ^

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

5 个答案:

答案 0 :(得分:31)

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

我通过Homebrew安装了Postgresql,我也安装了Postgresql应用程序。然而,对于PostGIS,我是通过Homebrew安装的。

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

2014年9月25日更新:

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

$ psql

psql> \c databaseName;

psql> CREATE EXTENSION Postgis;

答案 1 :(得分:3)

也许这是postgis的一些问题,首先看一下“地理”这个类型是否存在? 就像下面一样;

db_lbs => \ dT地理

        List of data types
 Schema |   Name    | Description 
--------+-----------+-------------
 lbs    | geography | 
(1 row)

顺便提一下,请注意当前的search_path;

我猜你的架构中不存在类型“geography”,它可能存在于公共架构中, 所以先检查一下。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

我遇到了同样的问题,我通过卸载postgres,postgis并重新安装,然后是官方安装文档解决了这个问题。 对于Windows:

http://postgis.net/windows_downloads

对于Ubuntu& OSX:

http://postgis.net/install

答案 4 :(得分:0)

如果有人在连接到使用 Qurkus 编写的 Heroku 应用程序时遇到同样的错误,修复方法如下——需要将 ?currentSchema=YOUR_CURRENT_SCHEMA 附加到 JDBC URI