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

Posted

技术标签:

【中文标题】如何在 Webfaction 上已经存在的 postgres 数据库上启用 GeoDjango?【英文标题】:How can I enable GeoDjango on an already-existing postgres database on Webfaction? 【发布时间】:2015-11-20 19:59:06 【问题描述】:

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

    根据文档将我的项目转换为使用 GeoDjango。 在 Webfaction UI 中,将 PostGIS 扩展添加到我的数据库中。

    ./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
    

【问题讨论】:

有时会在 Ubuntu 上看到,当未安装 postgist 脚本包时,它是衍生品。 您是如何将项目转换为使用 django 的? 【参考方案1】:

有一种简单而可怕的方法可以让这个工作正常进行。将以下设置指定为与您的网络派系数据库相同的名称:

# settings.py

...
POSTGIS_TEMPLATE = 'my_database_name'

现在./manage.py migrate 应该可以正常工作了。

说明

这个错误的原因是因为 Django 认为 PostGIS 没有安装在数据库中,并试图将其作为扩展安装,PostGIS 2 样式。

它执行的测试是查看 PostGIS 数据库模板是否存在。如果不是,它会尝试以与 PostGIS

通过更改此设置,Django 会检查是否存在普通数据库(而不是 PostGIS 模板),然后得出结论认为一切设置正确 - 确实如此。错误的测试,但正确的结果。

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

【讨论】:

从 Django 1.9 开始,这个解决方案已经过时了,因为模板东西已经与 PostGIS 1.5 支持一起被删除了。

以上是关于如何在 Webfaction 上已经存在的 postgres 数据库上启用 GeoDjango?的主要内容,如果未能解决你的问题,请参考以下文章

django 中的 css 文件托管在 webfaction 上

如何使用 Git 对远程存储库进行初始推送?

不同位大小的 POS 上的数据类型之间是不是存在差异?

对于 Django 开发的初学者来说,Google App Engine 是不是比 Webfaction 更好? [关闭]

POS 在 Trello API 中的实际含义是啥

如何使jquery“$ .post”请求同步[重复]