sed*_*nym 6 django postgresql postgis geodjango webfaction
我在Webfaction共享主机上运行Django 1.8.4,我需要启用GeoDjango.这些是我采取的步骤:
跑./manage.py migrate
.这是错误:
django.db.utils.OperationalError: could not open extension control file "/usr/pgsql-9.1/share/extension/postgis.control": No such file or `directory
Run Code Online (Sandbox Code Playgroud)sed*_*nym 11
有一种简单,可怕的方法来实现这一点.将以下设置指定为与webfaction数据库相同的名称:
# settings.py
...
POSTGIS_TEMPLATE = 'my_database_name'
Run Code Online (Sandbox Code Playgroud)
现在./manage.py migrate
应该正常工作.
出现此错误的原因是因为Django认为PostGIS没有安装在数据库上,并且正在尝试将其安装为PostGIS 2样式的扩展.
它执行的测试是查看PostGIS数据库模板是否存在.如果不是,它会尝试以与PostGIS <2(Webfaction上安装的内容)不兼容的方式安装它.
通过更改此设置,Django会检查是否存在正常数据库(而不是PostGIS模板),然后得出结论:所有内容都已正确设置 - 它就是这样.测试错误,但结果不对.
如果你对目前究竟发生了什么感到好奇,请看看django.contrib.gis.db.backends.postgis.base.DatabaseWrapper
.