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

Heroku部署Django REST应用迁移异常:执行migrate后仍提示未应用迁移

解决Heroku上Django迁移不一致的问题

核心原因

heroku run 启动的是临时一次性容器,在这个容器里生成的迁移文件(makemigrations的产物)会在容器销毁后丢失。你本地没有这些迁移文件,后续执行migrate时,Heroku上的数据库根本没真正应用这些迁移,导致迁移状态不一致,出现no such table和未应用迁移的提示。

修复步骤

  1. 本地生成迁移文件
    在本地开发环境中,确保本地数据库与代码状态一致,执行:

    python manage.py makemigrations
    

    这会在本地项目的migrations目录下生成对应的迁移文件。

  2. 提交迁移文件到版本控制
    将生成的迁移文件添加到Git并提交:

    git add your_app_name/migrations/
    git commit -m "补充缺失的迁移文件"
    
  3. 重新部署代码到Heroku
    将包含迁移文件的代码推送到Heroku:

    git push heroku main
    
  4. 在Heroku上执行迁移
    现在迁移文件已存在于Heroku的应用容器中,执行迁移:

    heroku run python manage.py migrate
    
  5. 验证迁移状态并创建超级用户
    先检查所有迁移是否已应用:

    heroku run python manage.py showmigrations
    

    确认没有未应用的迁移后,再创建超级用户:

    heroku run python manage.py createsuperuser
    

额外注意事项

  • 禁止在Heroku临时容器中执行makemigrations,所有迁移文件必须在本地生成并提交版本控制后再部署。
  • 检查Heroku环境变量DATABASE_URL是否正确指向你的Heroku Postgres数据库,避免因连接错误数据库导致迁移无效。
  • 若问题仍存在,可尝试重置数据库(注意:此操作会清空所有数据):
    heroku pg:reset DATABASE_URL
    heroku run python manage.py migrate
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:09:56