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

时间:2011-09-20 21:08:04

标签: django postgresql postgis geodjango

我正在尝试推出GeoDjango应用。我安装了Postgres&在Lion上使用brew的PostGIS。我使用template_postgis创建了一个数据库:createdb -T template_postgis test

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

  

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

如何追踪错误来源?我检查过用户&传递配置可以访问数据库等。

5 个答案:

答案 0 :(得分:39)

只需添加你的settings.py正确版本的postgis:

  

POSTGIS_VERSION =(2,0,3)

答案 1 :(得分:19)

作为第一个调试步骤:尝试手动检查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)

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

答案 2 :(得分:10)

我的解决方案是在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;

答案 3 :(得分:3)

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

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

中所述

答案 4 :(得分:2)

如果您使用django_debug_toolbar尝试删除它,或按https://github.com/django-debug-toolbar/django-debug-toolbar/issues/442

上的建议注释掉debug_toolbar/utils/tracking/db.py第152行