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 小时左右后。这里的问题是
- Heroku 数据库没有默认启用 qgis 功能 - 您必须使用
heroku pg:psql
然后 运行 CREATE EXTENSION postgis;
- 在 docker 容器中安装 QGIS 会导致它无法执行
hero pg:push localdatabase -postgresqlremoteherokudb
和 heroku config:add DATABASE_URL=postgis://foo:bar@localhost:5432/gis
等功能 所以如果有人正在关注 python nearbyshops 教程,你也可能会在这里结束。我一直认为这是一个数据库问题,但更多的是与 heroku 配置设置有关。
- 如果您是从 docker 来到这里,这可能意味着您需要安装 django_heroku 软件包来修改您的设置。最近有关于如何将地理空间应用程序部署到 heroku 的 2019 年和 2018 年指南,但同样,您不需要这些。 (至少对我来说我没有)
- GIS 现在可以作为扩展使用,您不再需要添加构建包。
如果您将 gunicorn 用于静态文件,仍然存在一些配置问题,因此网站最初无法正常启动。强烈建议您跟踪您的 heroku 日志错误(手动 settings.py 编码或 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 小时左右后。这里的问题是
- Heroku 数据库没有默认启用 qgis 功能 - 您必须使用
heroku pg:psql
然后 运行CREATE EXTENSION postgis;
- 在 docker 容器中安装 QGIS 会导致它无法执行
hero pg:push localdatabase -postgresqlremoteherokudb
和heroku config:add DATABASE_URL=postgis://foo:bar@localhost:5432/gis
等功能 所以如果有人正在关注 python nearbyshops 教程,你也可能会在这里结束。我一直认为这是一个数据库问题,但更多的是与 heroku 配置设置有关。 - 如果您是从 docker 来到这里,这可能意味着您需要安装 django_heroku 软件包来修改您的设置。最近有关于如何将地理空间应用程序部署到 heroku 的 2019 年和 2018 年指南,但同样,您不需要这些。 (至少对我来说我没有)
- GIS 现在可以作为扩展使用,您不再需要添加构建包。
如果您将 gunicorn 用于静态文件,仍然存在一些配置问题,因此网站最初无法正常启动。强烈建议您跟踪您的 heroku 日志错误(手动 settings.py 编码或 heroku 插件)。