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. Была ли создана база данных из пространственной базы данных шаблон?
Как я могу отслеживать источник ошибки? Я проверил, что пользователь и пароль в конфиге имеют доступ к базе данных и т.д.
Ответы
Ответ 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
В этом случае вы можете выполнить миграцию после копирования некоторых библиотек, как описано в этот билет
Ответ 5
если вы используете django_debug_toolbar
, попробуйте удалить его или закомментировать debug_toolbar/utils/tracking/db.py
строку 152, как предложено на https://github.com/django-debug-toolbar/django-debug-toolbar/issues/442