Моя база данных 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 и его шаблонах и т. Д. Не так уж велики. Любые идеи? Спасибо.


person Phil Gyford    schedule 14.05.2012    source источник
comment
У меня была такая же проблема раньше, но я не могу понять, как я ее решил. Я думаю, что пробовал это: stackoverflow.com/questions/5907672/   -  person dannyroa    schedule 14.05.2012
comment
была такая же проблема с PostgreSQL 9.3 и PostGIS 2.1, установленными на OS X 10.9.1 с использованием homebrew, все, что мне нужно было сделать, это добавить POSTGIS_VERSION = ( 2, 1 ) к settings.py. Он просто не мог прочитать настройки   -  person BenjaminGolder    schedule 17.01.2014
comment
@BenjaminGolder - это также решило мою проблему ... Предполагаете, что это должен быть правильный ответ?   -  person Erve1879    schedule 11.02.2014


Ответы (3)


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

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

POSTGIS_VERSION = ( 2, 1 )

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

Я не знаю почему, но у Django возникают проблемы с чтением информации о версии из PostGIS.

person BenjaminGolder    schedule 11.02.2014
comment
Собираюсь отметить это как правильный ответ только потому, что он, кажется, работает для пары человек; Я не пробовал. Спасибо! - person Phil Gyford; 11.02.2014
comment
где находится settings.py? - person Aysennoussi; 27.02.2015

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

person Mark Longair    schedule 02.03.2015
comment
Это лучший ответ. См. билет code.djangoproject.com/ticket/24862#ticket - person Bryce; 27.05.2015

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

person Maqsood    schedule 16.07.2012