Heroku部署Django含地理字段模型时,迁移报错'geo_db_type'属性缺失
解决Heroku部署Django几何字段迁移报错问题
排查数据库引擎配置一致性
- 确认
settings.py中数据库引擎在Heroku环境下实际生效:如果使用dj-database-url,数据库URL可能会覆盖本地设置的引擎,需强制指定PostGIS引擎:import dj_database_url DATABASES = { 'default': dj_database_url.config(conn_max_age=600) } # 强制替换为PostGIS引擎 DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.postgis'
调整构建包顺序
- Heroku构建包顺序必须将
heroku-geo-buildpack放在heroku/python之前,否则PostGIS依赖无法被Python环境正确识别。执行以下命令修正:heroku buildpacks:clear heroku buildpacks:add https://github.com/heroku/heroku-geo-buildpack.git heroku buildpacks:add heroku/python
验证PostGIS扩展状态
- 登录Heroku PostgreSQL控制台检查扩展是否存在:
执行SQL命令:heroku pg:psql
若无结果,重新创建扩展:SELECT * FROM pg_extension WHERE extname = 'postgis';CREATE EXTENSION postgis;
同步Django版本
- 确保Heroku与本地使用的Django版本完全一致,Python版本差异(3.10 vs 3.9)可能引发Geo模块兼容性问题。本地生成锁定版本的
requirements.txt:pip freeze > requirements.txt
强制重新部署
- 缓存可能导致配置不生效,提交空更新触发重新部署:
git commit --allow-empty -m "Force redeploy" git push heroku main
内容的提问来源于stack exchange,提问作者Taylor Higgins
相关产品推荐
相关产品推荐

