PostGIS 错误:类型“地理”不存在
Posted
技术标签:
【中文标题】PostGIS 错误:类型“地理”不存在【英文标题】:PostGIS Error: type "geography" does not exist 【发布时间】:2011-10-23 12:09:48 【问题描述】:我刚刚将我的开发机器升级到 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 的对象浏览器中查看数据库,我看到一堆Geometry
函数,所以安装似乎运行正常。我不确定我的问题可能是什么。安装程序是否可以只安装 PostGIS Geometry
,而不安装 Geography
?
【问题讨论】:
【参考方案1】:我以前也遇到过这个问题,但帮助我的不是 GIS 网站上的答案。
我通过 Homebrew 安装了 Postgresql,还安装了 Postgresql 应用程序。但是,对于 PostGIS,我是通过 Homebrew 安装的。
当我遇到这个问题时,我是在运行 Postgresql 应用程序而不是在终端中运行它,所以你当然会收到这个 PostGIS 错误,因为 PostGIS 从未安装在 Postgresql 应用程序上。一旦我在终端中启动 Postgresql,它就对我有用。
2014 年 9 月 25 日更新:
您可能没有在数据库中创建 PostGIS 扩展:
$ psql
psql> \c databaseName;
psql> CREATE EXTENSION Postgis;
【讨论】:
【参考方案2】:可能postgis有问题,先看看“geography”这个类型是否存在? 如下所示;
db_lbs=> \dT 地理
List of data types
Schema | Name | Description
--------+-----------+-------------
lbs | geography |
(1 row)
顺便请注意当前的search_path;
我猜你的架构中不存在“地理”类型,它可能存在于公共架构中, 所以先检查一下。
【讨论】:
【参考方案3】:我在GIS site 上回答了我的问题。我安装了 PostGIS 1.4,但直到 PostGIS 1.5 才添加 Geography
。所以我不得不卸载我所拥有的并重新安装 Postgres。不过,我很难找到包含 PostGIS 1.5 的版本。不过,有人建议我不要使用“Postgres Plus”专有软件,因为 EnterpriseDB 需要时间来移植最新的附加组件等。相反,我被重定向到 EnterpriseDB 网站上的常规 PostgreSQL 下载,这令人惊讶地难以找到。 Here it is。 PostGIS 没有附带 64 位版本,所以我不得不改用 32 位版本,这很有效。终于!
【讨论】:
【参考方案4】:我遇到了同样的问题,我通过卸载 postgres、postgis 并重新安装,然后按照官方安装文档解决了这个问题。 对于窗户:
http://postgis.net/windows_downloads
对于 Ubuntu 和 OSX:
http://postgis.net/install
【讨论】:
【参考方案5】:如果有人在连接到使用 Qurkus 编写的 Heroku 应用程序时遇到同样的错误,修复方法如下——需要将 ?currentSchema=YOUR_CURRENT_SCHEMA
附加到 JDBC URI
【讨论】:
以上是关于PostGIS 错误:类型“地理”不存在的主要内容,如果未能解决你的问题,请参考以下文章
错误:匹配 postgis 自定义模式时,函数 postgis_lib_version() 不存在