AttributeError: 'DatabaseOperations' 对象没有属性 'geo_db_type' QGIS Docker 容器到 Heroku

Posted

技术标签:

【中文标题】AttributeError: \'DatabaseOperations\' 对象没有属性 \'geo_db_type\' QGIS Docker 容器到 Heroku【英文标题】:AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type' QGIS Docker container to HerokuAttributeError: 'DatabaseOperations' 对象没有属性 'geo_db_type' QGIS Docker 容器到 Heroku 【发布时间】:2021-08-16 02:28:15 【问题描述】:

*** 上有一个非常老的线程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 图像 - 一个是 web,另一个是 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 run 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

EDIT heroku 上的 db url 是 postgres://foobar:3242q34rq2rq32rf3q2rfq2q2r3vq23rvq23vr@er3-13-234-91-69.compute- 我还运行了以下命令,它显示数据库现在需要 GIS,但我仍然收到错误

$ heroku pg:psql
create extension postgis;

【问题讨论】:

【参考方案1】:

尝试将 db 替换为 localhost

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

【讨论】:

这不起作用。我的 docker 容器中同时安装了 POSGIS 和 POSTGRES。得到同样的错误。当我插入命令heroku addons:create heroku-postgresql:hobby-dev -a appname 时,DATABASE_URL 显示为 //postgres1234567890wsfoobar。我想我必须弄清楚如何构建一个具有 GIS 功能的 heroku 数据库。【参考方案2】:

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

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

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

【讨论】:

以上是关于AttributeError: 'DatabaseOperations' 对象没有属性 'geo_db_type' QGIS Docker 容器到 Heroku的主要内容,如果未能解决你的问题,请参考以下文章

django 数据库连接出现的问题

属性错误:__enter__

AttributeError:“模块”对象没有属性“作者”

初学者 Python:AttributeError:'list' 对象没有属性

AttributeError:“字节”对象没有属性“告诉”

AttributeError: 'RDD' 对象没有属性 'show'