如何在 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 上
对于 Django 开发的初学者来说,Google App Engine 是不是比 Webfaction 更好? [关闭]