Django部署Heroku时出现列不存在与cursor不存在错误如何解决
问题原因&解决方案
1. 核心报错:column home_article.Influencers1_id does not exist 解决
这个错误是本地和Heroku数据库表结构不一致导致的,按以下步骤排查:
- 确认你重新生成的
migrations文件夹下的所有迁移文件已经全部提交到部署分支,推送到Heroku端 - 手动执行Heroku端迁移命令,不要依赖Heroku自动部署触发的迁移(自动迁移经常会因为配置问题执行失败):
heroku run python manage.py migrate
- 如果执行完还是有该报错,说明Heroku端数据库残留旧表结构和新模型不匹配,执行以下命令(注意:如果有生产数据请先备份!):
# 重置Heroku端数据库 heroku pg:reset # 重新执行数据库迁移 heroku run python manage.py migrate # 如果你有初始数据需要导入,执行完migrate后再执行loaddata命令导入初始数据
2. 报错:cursor "_django_curs_140244460422336_sync_1" does not exist 解决
这个报错90%的情况是上面的字段不存在报错触发的事务中断异常,解决完上面的字段不存在问题后该报错会自动消失。如果解决完上面的问题还是存在该报错,按以下步骤排查:
- 检查
settings.py中数据库配置的ATOMIC_REQUESTS参数是否正确,如果开启了全局事务,异常请求会导致事务中断,后续查询就会报游标不存在的错误 - 检查你的
Article模型里的Influencers1外键字段的命名,Django默认外键会自动加_id后缀,确认你没有手动修改过数据库字段名导致和模型字段名不匹配 - 检查Admin中你自定义的
Article展示字段,确认所有你配置的展示字段、过滤字段、搜索字段都真实存在于当前的Article模型中,没有引用已经删除的字段
内容的提问来源于stack exchange,提问作者Feramonics
相关产品推荐
相关产品推荐

