Postgis / Geodjango: Cannot determine PostGIS version for database

陌路散爱 提交于 2019-12-20 09:33:50

问题


I'm attempting to launch a GeoDjango app. I've installed Postgres & PostGIS using brew on Lion. I created a database using template_postgis: createdb -T template_postgis test.

When I run python manage.py syncdb, I get the following error:

django.core.exceptions.ImproperlyConfigured: Cannot determine PostGIS version for database "test". GeoDjango requires at least PostGIS version 1.3. Was the database created from a spatial database template?

How can I track down the source of the error? I've checked that the user & pass in the config have access to the database etc.


回答1:


As a first debugging step: try to check the postgis template version manually, e.g. on the command-line connect to your database with psql test, and query with select postgis_lib_version();. This function should be defined in template_postgis and return some number. Example output:

$ psql test
psql (9.0.4)
Type "help" for help.

test=# select postgis_lib_version();

 postgis_lib_version
---------------------
 1.5.2
(1 row)

If an error occurs, you know the error is in the database.




回答2:


Just add in your settings.py your right version of postgis :

POSTGIS_VERSION = (2, 0, 3)




回答3:


The solution for me was to run the following in the postgres terminal:

psql database_name

database_name=# CREATE EXTENSION postgis;

If you get ERROR: relation "spatial_ref_sys" already exists, run the following before CREATE EXTENSION postgis:

 drop table spatial_ref_sys;
 drop table geometry_columns;



回答4:


And in case the previous select returns an error, it may be that one particular version of PostGIS was installed on that database, that you updated Postgres.app to a newer version, that bundles a newer version of PostGIS. For example, after the recent update from Postgis 2.0 to 2.1

In that case, you can make a migration after copying back some libraries, like described in this ticket




回答5:


if you are using django_debug_toolbar try to delete it or comment out debug_toolbar/utils/tracking/db.py line 152 as suggested on https://github.com/django-debug-toolbar/django-debug-toolbar/issues/442



来源:https://stackoverflow.com/questions/7491798/postgis-geodjango-cannot-determine-postgis-version-for-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!