Моя база данных PostGIS выглядит отлично, но GeoDjango думает иначе... почему?

Я пытаюсь настроить приложение GeoDjango для проверки более ранней проблемы, которую я имел. Я создал базу данных postgresql, создал новый проект и приложение Django, но когда я попробую ./manage.py syncdb, я получаю следующее:

django.core.exceptions.ImproperlyConfigured: не удается определить версию PostGIS для базы данных "django_geotest". 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 и его шаблонах и т.д. не так уж велики. Есть идеи? Спасибо.

Ответ 1

У меня была та же проблема с PostgreSQL 9.3 и PostGIS 2.1, установленными на OS X 10.9.1 с использованием homebrew.

Для этой конкретной проблемы вам нужно только добавить эту строку:

POSTGIS_VERSION = ( 2, 1 )

с использованием номера, разделенного запятыми, для вашей версии PostGIS до settings.py.

Я не уверен, почему, но Django не может прочитать информацию о версии из PostGIS.

Ответ 2

Всякий раз, когда я получаю эту ошибку в подобной ситуации (т.е. когда база данных выглядит вполне достоверной базой PostGIS), оказалось, что в DATABASES в settings.py произошла ошибка. Это фактически проверка подлинности при сбое в работе базы данных, но бывает так, что первое, что касается базы данных при запуске моего проекта GeoDjango, - это вызов postgis_lib_version из django/contrib/gis/db/backends/postgis/operations.py

Ответ 3

У меня была такая же проблема пару месяцев назад. Мне пришлось снова создать шаблонную базу данных и основную базу данных. Из этой ссылки.