Postgis / Geodjango:无法确定数据库的 PostGIS 版本

Posted

技术标签:

【中文标题】Postgis / Geodjango:无法确定数据库的 PostGIS 版本【英文标题】:Postgis / Geodjango: Cannot determine PostGIS version for database 【发布时间】:2011-11-21 10:49:38 【问题描述】:

我正在尝试启动 GeoDjango 应用程序。我已经在 Lion 上使用 brew 安装了 Postgres 和 PostGIS。我使用 template_postgis 创建了一个数据库:createdb -T template_postgis test

当我运行python manage.py syncdb 时,我收到以下错误:

django.core.exceptions.ImproperlyConfigured:无法确定 用于数据库“测试”的 PostGIS 版本。 GeoDjango 至少需要 PostGIS 1.3 版。数据库是从空间数据库创建的 模板?

如何追踪错误的来源?我已经检查了用户并传入配置是否可以访问数据库等。

【问题讨论】:

【参考方案1】:

只需在您的 settings.py 中添加您正确的 postgis 版本:

POSTGIS_VERSION = (2, 0, 3)

【讨论】:

这样就解决了。我仍然想了解为什么 geodjango 无法自行解决...【参考方案2】:

作为调试的第一步:尝试手动检查 postgis 模板版本,例如在命令行上使用psql test 连接到您的数据库,并使用select postgis_lib_version(); 进行查询。这个函数应该在 template_postgis 中定义并返回一些数字。示例输出:

$ psql test
psql (9.0.4)
Type "help" for help.

test=# select postgis_lib_version();

 postgis_lib_version
---------------------
 1.5.2
(1 row)

如果发生错误,您就知道错误在数据库中。

【讨论】:

嗨 Sandeep,你的输出状态是什么? 抱歉..我搞定了..我必须关注docs.djangoproject.com/en/dev/ref/contrib/gis/install/postgis/… 差不多:CREATE EXTENSION postgis; 在你的数据库的 shell 中运行 当 Postgres 没有运行时,这是同样的错误。所以只要运行 Postgres 就可以了。【参考方案3】:

我的解决方案是在 postgres 终端中运行以下命令:

psql database_name

database_name=# CREATE EXTENSION postgis;

如果你得到ERROR: relation "spatial_ref_sys" already exists,在CREATE EXTENSION postgis之前运行以下命令:

 drop table spatial_ref_sys;
 drop table geometry_columns;

【讨论】:

【参考方案4】:

如果先前的选择返回错误,则可能是该数据库上安装了一个特定版本的 PostGIS,您将 Postgres.app 更新为较新版本,捆绑了较新版本的 PostGIS。例如,在最近从 Postgis 2.0 更新到 2.1 之后

在这种情况下,您可以在复制回一些库后进行迁移,如this ticket 中所述

【讨论】:

【参考方案5】:

如果您使用的是django_debug_toolbar,请尝试将其删除或注释掉debug_toolbar/utils/tracking/db.py 第152 行,如https://github.com/django-debug-toolbar/django-debug-toolbar/issues/442 所建议的那样

【讨论】:

以上是关于Postgis / Geodjango:无法确定数据库的 PostGIS 版本的主要内容,如果未能解决你的问题,请参考以下文章

带有 postgis 的 geodjango 不起作用

geodjango(postgis)中两个3D点之间的距离

如何使用 GeoDjango/PostGIS 满足“enforce_srid_coordinate”约束?

Heroku 上的 postgis Geodjango 出错

为啥它在运行迁移时抛出`GeoDjango Postgis 要求不满足得到错误?

Heoku Postgres 的问题“无法访问文件“$libdir/postgis-2.1”