You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django部署Heroku执行migrate成功仍提示21个未应用迁移且报500错误

问题根本原因

你遇到的迁移已执行却仍提示未应用的问题,核心是Heroku的运行机制导致的:

  • heroku run 命令每次启动的都是独立的一次性临时dyno,所有在该dyno运行期间生成的文件都会在命令结束后销毁,不会同步到你的部署代码和其他dyno。
  • 如果你没有将本地生成的迁移文件提交到Git并推送到Heroku,Heroku上的代码缺少完整迁移记录,就会出现明明执行过migrate,其他进程还是检测到未应用迁移的情况。

修复步骤

  1. 先排查本地Git忽略规则,确认你的 .gitignore 没有全局屏蔽所有app下的migrations/目录,仅需要忽略migrations/__pycache__目录即可,不要忽略migrations下的.py迁移文件。
  2. 在本地项目根目录执行命令生成所有迁移:
    python manage.py makemigrations
    
  3. 确认所有应用的migrations/目录下都生成了对应的迁移文件后,提交代码到Git并推送到Heroku:
    git add .
    git commit -m "补充所有缺失的迁移文件"
    git push heroku main
    # 若你的主分支名为master,将main替换为master
    
  4. 推送完成后重新在Heroku执行迁移:
    heroku run -a fathomless-cliffs-95117 python manage.py migrate
    
  5. 执行以下命令验证迁移状态,确认所有迁移前都标记了[X]代表已应用:
    heroku run -a fathomless-cliffs-95117 python manage.py showmigrations
    

500错误其他排查方向

如果迁移问题解决后访问仍返回500,可通过Heroku日志查看具体报错:

heroku logs --tail -a fathomless-cliffs-95117

常见的部署遗漏点包括:

  • ALLOWED_HOSTS 配置中没有添加你的Heroku应用域名
  • 没有配置whitenoise处理静态资源
  • 生产环境缺失必要的环境变量(如SECRET_KEY、数据库连接参数等)
  • 生产环境DEBUG设置为False时没有配置对应的静态资源访问规则

内容的提问来源于stack exchange,提问作者David Balaban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:15:10