我刚刚将我的开发机器升级到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
?
答案 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:
答案 4 :(得分:0)
如果有人在连接到使用 Qurkus 编写的 Heroku 应用程序时遇到同样的错误,修复方法如下——需要将 ?currentSchema=YOUR_CURRENT_SCHEMA
附加到 JDBC URI