如何在Webfaction上已有的postgres数据库上启用GeoDjango?

sed*_*nym 6 django postgresql postgis geodjango webfaction

我在Webfaction共享主机上运行Django 1.8.4,我需要启用GeoDjango.这些是我采取的步骤:

  1. 根据文档将我的项目转换为使用GeoDjango.
  2. 在Webfaction UI中,将PostGIS扩展添加到我的数据库中.
  3. ./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.

  • 自 Django 1.9 起,此解决方案已过时,因为模板内容已与 PostGIS 1.5 支持一起删除。 (2认同)