django - para - postgis sql
Postgis/Geodjango: no se puede determinar la versiĆ³n de PostGIS para la base de datos (5)
Estoy intentando lanzar una aplicación GeoDjango. He instalado Postgres & PostGIS usando brew en Lion. Creé una base de datos usando template_postgis: createdb -T template_postgis test
.
Cuando ejecuto python manage.py syncdb
, obtengo el siguiente error:
django.core.exceptions.ImproperlyConfigured: No se puede determinar la versión de PostGIS para la prueba de la base de datos. GeoDjango requiere al menos la versión 1.3 de PostGIS. ¿Se creó la base de datos a partir de una plantilla de base de datos espacial?
¿Cómo puedo localizar la fuente del error? He comprobado que el usuario y el paso en la configuración tienen acceso a la base de datos, etc.
Como primer paso de depuración: intente verificar la versión de la plantilla postgis manualmente, por ejemplo, en la línea de comandos conéctese a su base de datos con la psql test
, y consulte con select postgis_lib_version();
. Esta función debe definirse en template_postgis y devolver algún número. Ejemplo de salida:
$ psql test
psql (9.0.4)
Type "help" for help.
test=# select postgis_lib_version();
postgis_lib_version
---------------------
1.5.2
(1 row)
Si ocurre un error, sabes que el error está en la base de datos.
La solución para mí fue ejecutar lo siguiente en el terminal de Postgres:
psql database_name
database_name=# CREATE EXTENSION postgis;
Si obtiene ERROR: relation "spatial_ref_sys" already exists
, ejecute lo siguiente antes de CREATE EXTENSION postgis
:
drop table spatial_ref_sys;
drop table geometry_columns;
Si está utilizando django_debug_toolbar
intente eliminarlo o comente la línea 152 debug_toolbar/utils/tracking/db.py
como se sugiere en https://github.com/django-debug-toolbar/django-debug-toolbar/issues/442
Solo agrega tu configuración.py tu versión correcta de Postgis:
POSTGIS_VERSION = (2, 0, 3)
Y en caso de que la selección anterior devuelva un error, puede ser que una versión particular de PostGIS se haya instalado en esa base de datos, que haya actualizado Postgres.app a una versión más nueva, que incluya una versión más nueva de PostGIS. Por ejemplo, después de la reciente actualización de Postgis 2.0 a 2.1
En ese caso, puede realizar una migración después de copiar algunas bibliotecas, como se describe en este ticket.