Подтвердить что ты не робот

Postgis/Geodjango: не удается определить версию PostGIS для базы данных

Я пытаюсь запустить приложение GeoDjango. Я установил Postgres и PostGIS, используя brew на Lion. Я создал базу данных с помощью template_postgis: createdb -T template_postgis test.

Когда я запускаю python manage.py syncdb, я получаю следующую ошибку:

django.core.exceptions.ImproperlyConfigured: не могу определить Версия PostGIS для базы данных "Тест". GeoDjango требует по крайней мере Версия PostGIS 1.3. Была ли создана база данных из пространственной базы данных шаблон?

Как я могу отслеживать источник ошибки? Я проверил, что пользователь и пароль в конфиге имеют доступ к базе данных и т.д.

4b9b3361

Ответ 1

В качестве первого этапа отладки: попробуйте проверить версию шаблона 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

Просто добавьте свои settings.py правильную версию postgis:

POSTGIS_VERSION = (2, 0, 3)

Ответ 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

В этом случае вы можете выполнить миграцию после копирования некоторых библиотек, как описано в этот билет