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

执行Django迁移时触发InconsistentMigrationHistory错误求助

解决Django迁移历史不一致问题

核心问题分析

错误提示说明test_1.0001_initial迁移文件中声明了依赖test_2.0016_boolean,但数据库中test_1.0001_initial已被应用,test_2.0016_boolean却未应用,导致依赖链断裂。


解决方案步骤

1. 先备份数据库

重要:操作前务必备份数据库,避免数据丢失。

2. 检查并修正迁移文件的依赖关系

打开test_1/migrations/0001_initial.py,查看dependencies字段:

dependencies = [
    # 检查这里是否错误包含了('test_2', '0016_boolean')
]
  • 如果发现test_1的初始迁移错误依赖了test_2的后期迁移,直接删除该依赖项(初始迁移通常无需依赖其他app的非基础迁移)。
  • 修改后保存文件,执行命令同步fake状态:
    python manage.py migrate --fake test_1 0001_initial
    

3. 调整数据库迁移记录(若步骤2无效)

3.1 查看当前迁移记录

通过数据库客户端执行查询:

SELECT * FROM django_migrations WHERE app IN ('test_1', 'test_2');

确认test_1.0001_initial已存在,test_2.0016_boolean不存在。

3.2 修正记录顺序

  1. 先删除test_1.0001_initial的数据库记录:
    DELETE FROM django_migrations WHERE app='test_1' AND name='0001_initial';
    
  2. fake应用test_2.0016_boolean:
python manage.py migrate --fake test_2 0016_boolean
  1. 重新应用(或fake应用)test_1.0001_initial:
  • 如果test_1的表已经在数据库中存在(之前实际执行过迁移),执行fake:
    python manage.py migrate --fake test_1 0001_initial
    
  • 如果表不存在,直接正常迁移:
    python manage.py migrate test_1
    

4. 检查INSTALLED_APPS顺序

打开settings.py查看INSTALLED_APPS,确保被依赖的app(test_2)排在依赖它的app(test_1)之前,Django会按此顺序执行迁移。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:42:37