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

Heroku无法识别migrations、线上部署报R10/H10错误求助

故障根因

你遇到的线上崩溃不是未应用迁移直接导致的,核心触发原因有两个:

  • 启动命令硬编码了端口5000,但Heroku会为每个web进程动态分配端口,存在$PORT环境变量中,你绑定固定端口无法被Heroku检测到,触发R10启动超时错误,进程直接被系统杀死
  • 线上使用了Django自带的runserver开发服务器,它仅适用于本地调试,性能、稳定性都不满足生产环境要求,也是启动异常的诱因

至于未应用迁移的提示,是因为Heroku线上的数据库和你本地数据库是独立的,你本地执行过迁移只会同步本地库,线上库还没执行对应的迁移操作,所以会出现本地无迁移可做、线上提示未迁移的情况。


修复步骤

1. 调整依赖和Procfile配置

Procfile是Heroku用来识别进程启动命令的配置文件,不需要和JSON相关,适配你的Django项目按以下步骤修改即可:

  • 先确保你的requirements.txt中添加了生产WSGI服务器依赖gunicorn,如果没有就本地执行pip install gunicorn,再更新requirements.txt
  • 把项目根目录的Procfile内容替换为:
web: gunicorn store.wsgi --log-file -

(你日志中显示配置文件为store.settings,说明你的项目主文件夹名为store,所以直接用上面的配置即可,不需要额外修改)
gunicorn启动时会自动读取Heroku分配的$PORT环境变量绑定端口,不会再出现R10错误。

2. 调整Django生产配置

打开Django项目的settings.py,修改ALLOWED_HOSTS配置,添加你的Heroku应用域名,避免访问拦截:

ALLOWED_HOSTS = ['shrouded-bastion-04661.herokuapp.com', '127.0.0.1']

3. 执行线上数据库迁移

代码部署完成后,在本地项目目录执行Heroku CLI命令,直接在远程线上环境执行迁移:
heroku run python manage.py migrate


验证

所有修改完成后重新提交代码部署到Heroku,部署完成后再访问应用即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:15:04