我的PostGIS数据库看起来不错,但GeoDjango认为不是......为什么?

时间:2012-05-14 14:01:53

标签: django postgresql postgis geodjango

我正在尝试设置一个GeoDjango应用来测试an earlier problem我正在进行的测试。我已经设置了一个postgresql数据库,创建了一个新的Django项目和应用程序,但是当我尝试./manage.py syncdb时,我得到了这个:

  

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

我不明白,因为我之前已经完成了GeoDjango的所有安装要求,并通过这样做创建了这个django_geotest数据库:

$ createdb -T template_postgis django_geotest

看起来数据库设置正确:

django_geotest=# SELECT PostGIS_full_version();
                                     postgis_full_version                                          
-------------------------------------------------------------------------------------------------------
 POSTGIS="1.5.3" GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.3" USE_STATS
(1 row)

描述数据库,我明白了:

django_geotest=# \d                
             List of relations
 Schema |       Name        | Type  | Owner 
--------+-------------------+-------+-------
 public | geography_columns | view  | phil
 public | geometry_columns  | table | phil
 public | spatial_ref_sys   | table | phil
(3 rows)

所以现在我不知道接下来要尝试什么...我对postgresql及其模板等的了解并不是那么好。有任何想法吗?感谢。

3 个答案:

答案 0 :(得分:18)

使用自制程序在OS X 10.9.1上安装PostgreSQL 9.3和PostGIS 2.1时遇到了同样的问题。

对于此特定问题,您只需添加以下行:

POSTGIS_VERSION = ( 2, 1 )

使用PostGIS版本的逗号分隔编号为settings.py

我不知道为什么,但是Django无法从PostGIS中读取版本信息。

答案 1 :(得分:5)

每当我在类似的情况下(即当数据库看起来是一个完全有效的PostGIS数据库时)出现此错误时,我发现DATABASES中出现了错误。 settings.py。它在连接到数据库失败时实际上是身份验证,但是在启动我的GeoDjango项目时触及数据库的第一件事就是来自postgis_lib_version的{​​{1}}调用

答案 2 :(得分:1)

几个月前,我有同样的问题。我不得不再次重新创建template_database和主数据库。 From this link