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

生产环境Django迁移文件误删后无法检测模型变更的解决求助

解决方案

1. 重建与数据库状态(已应用至0012)匹配的缺失迁移文件

操作步骤:

  • 先将app/models.py临时恢复到数据库当前对应的结构状态(即迁移至0012时的模型代码,确保和数据库表完全一致)
  • 在app/migrations目录下生成空迁移文件,并修改编号为0012:
    python manage.py makemigrations app --name initial --empty
    # 将生成的文件名改为 0012_initial.py
    
  • 编辑该迁移文件,添加空SQL操作(仅用于标记状态,无需修改数据库):
    from django.db import migrations
    
    class Migration(migrations.Migration):
        initial = True
        dependencies = []
        operations = [
            migrations.RunSQL(''),
        ]
    
  • 执行fake迁移,让Django标记该迁移为已应用,对齐数据库状态:
    python manage.py migrate app --fake 0012
    
  • 恢复app/models.py到修改后的状态,此时运行python manage.py makemigrations app即可生成基于0012的新迁移。

2. 确保新应用/模型变更能正确生成迁移文件

检查与修复操作:

  • 确认新应用(如comments)的migrations目录存在,且包含__init__.py文件(若不存在,手动创建)
  • 再次核对INSTALLED_APPS中的应用名称,确保无拼写错误(如'comments'而非'comment')
  • 清理Django缓存:删除项目根目录及各应用migrations目录下的__pycache__文件夹
  • 运行迁移生成命令时明确指定应用:
    python manage.py makemigrations comments
    
  • 检查模型的Meta类,若存在managed = False,需改为managed = True(Django不会为非托管模型生成迁移)
  • 验证数据库连接:运行python manage.py inspectdb comments,确认Django能正确读取该应用的表结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:47:49