AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type' QGIS Docker container to Heroku

AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type' QGIS Docker container to Heroku

Whosebug 上有一个非常古老的线程Getting 'DatabaseOperations' object has no attribute 'geo_db_type' error when doing a syncdb

但我对他们的问题的不同之处在于我的容器中安装了 POSTGIS 和 POSTGRES。具体来说,我使用了 QGIS,图像是这样的

db:

image: kartoza/postgis:13.0

volumes:

- postgis-data:/var/lib/postgresql

所以我在本地有两张 docker 图片 - 一张是网络图片,另一张是 kartoza/postgis

我在 settings.py 文件中也有这个

import dj_database_url

db_from_env = dj_database_url.config(conn_max_age=500)

DATABASES['default'].update(db_from_env)

应该支持GIS数据。我看到我所有的 gis 包、地理定位包都已安装,没有任何问题。但是当我 运行 heroku 运行 python manage.py migrate

时出现上述错误

网站 运行 的功能非常有限,因为需要地理变量才能让您通过登录页面。

我部署的步骤是

heroku create appname

heroku stack:set container -a appname

heroku addons:create heroku-postgresql:hobby-dev -a appname

heroku git:remote -a appname

git push heroku main

编辑 heroku 上的数据库 url 是 postgres://foobar:3242q34rq2rq32rf3q2rfq2q2r3vq23rvq23vr@er3-13-234-91-69.compute- 我还有 运行 下面的命令,它显示数据库现在采用 GIS,但我仍然收到错误消息

$ heroku pg:psql
create extension postgis;

尝试用本地主机替换数据库

heroku config:add DATABASE_URL=postgis://foo:bar@localhost:5432/gis

好的,阅读 14 小时左右后。这里的问题是

  1. Heroku 数据库没有默认启用 qgis 功能 - 您必须使用 heroku pg:psql 然后 运行 CREATE EXTENSION postgis;
  2. 在 docker 容器中安装 QGIS 会导致它无法执行 hero pg:push localdatabase -postgresqlremoteherokudbheroku config:add DATABASE_URL=postgis://foo:bar@localhost:5432/gis 等功能 所以如果有人正在关注 python nearbyshops 教程,你也可能会在这里结束。我一直认为这是一个数据库问题,但更多的是与 heroku 配置设置有关。
  3. 如果您是从 docker 来到这里,这可能意味着您需要安装 django_heroku 软件包来修改您的设置。最近有关于如何将地理空间应用程序部署到 heroku 的 2019 年和 2018 年指南,但同样,您不需要这些。 (至少对我来说我没有)
  4. GIS 现在可以作为扩展使用,您不再需要添加构建包。

如果您将 gunicorn 用于静态文件,仍然存在一些配置问题,因此网站最初无法正常启动。强烈建议您跟踪您的 heroku 日志错误(手动 settings.py 编码或 heroku 插件)。