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

7

我在Webfaction共享主机上运行Django 1.8.4,需要启用GeoDjango。我采取了以下步骤:

  1. Converted my project to use GeoDjango as per the documentation.
  2. In the Webfaction UI, added the PostGIS extension to my database.
  3. Ran ./manage.py migrate. Here's the error:

    django.db.utils.OperationalError: could not open extension control file "/usr/pgsql-9.1/share/extension/postgis.control": No such file or `directory
    

有时在Ubuntu及其衍生版上会遇到这个问题,当postgist脚本包未安装时。 - e4c5
你是如何将项目转换为使用Django的? - Animesh
1个回答

11

有一种简单而可怕的方法可以让它工作。将以下设置指定为与您的Webfaction数据库名称相同的名称:

有一种简单而可怕的方法可以让它工作。将以下设置指定为与您的Webfaction数据库名称相同的名称:

# settings.py

...
POSTGIS_TEMPLATE = 'my_database_name'

现在,./manage.py migrate 应该像平常一样工作。

解释

这个错误的原因是 Django 认为数据库上没有安装 PostGIS,并试图以 PostGIS 2 样式来安装它作为一个扩展。

它执行的测试是查看 PostGIS 数据库模板是否存在。如果不存在,它会尝试以与 Webfaction 上安装的 PostGIS < 2 不兼容的方式来安装它。

通过更改此设置,Django 检查普通数据库是否存在(而不是 PostGIS 模板),然后得出一切都已正确设置的结论 - 这就是正确的结果,但是测试方法不对。

如果你想知道到底发生了什么,请看一下 django.contrib.gis.db.backends.postgis.base.DatabaseWrapper


2
自从Django 1.9版本以后,这个解决方案已经过时了,因为模板功能已经与PostGIS 1.5支持一起被删除。 - graup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接