【问题标题】: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
【问题描述】:

stackoverflow 上有一个非常老的线程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;

【问题讨论】:

    标签: django docker heroku


    【解决方案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 个小时左右的阅读。这里的问题是

    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 附近的商店教程进行操作,您也可能会在这里结束。我在这里固执地认为这是一个 db 问题,但更多的是与 heroku 配置设置有关。
    3. 如果你是从 docker 来的,这可能意味着你需要安装 django_heroku 包来修改你的设置。最近有 2019 年和 2018 年关于如何将地理空间应用程序部署到 heroku 的指南,但同样,您不需要这些。 (至少对我来说我没有)
    4. GIS 现在可作为扩展使用,您不再需要添加构建包。

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

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 2021-12-19
      • 2016-08-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 2020-10-19
      • 2012-09-14
      • 1970-01-01
      相关资源
      最近更新 更多