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

Django迁移报错:迁移历史不一致问题求助

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

问题说明

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency userauths.0001_initial on database 'default'.

该错误源于admin应用的迁移早于它依赖的userauths迁移被执行,导致依赖链断裂,常见于自定义用户模型场景下。

已尝试操作

  • 注释掉INSTALLED_APPS中的django.contrib.admin和urls.py里的path("admin/", admin.site.urls)
  • 执行python manage.py migrate userauths zero,删除userauths/migrations下除__init__.py外的所有文件,再依次执行python manage.py makemigrations userauths和python manage.py migrate

可行解决步骤

方法一:彻底清理迁移记录(适合开发环境)

  1. 保持django.contrib.admin的注释状态
  2. 直接操作数据库,找到django_migrations表,删除所有app字段为admin和userauths的记录
  3. 再次删除userauths/migrations下除__init__.py外的所有迁移文件
  4. 重新生成并执行迁移:
    python manage.py makemigrations userauths
    python manage.py migrate
    
  5. 取消django.contrib.admin的注释(包括INSTALLED_APPS和urls.py配置)
  6. 单独执行admin应用的迁移:
    python manage.py migrate admin
    

方法二:修正自定义用户模型配置

如果使用了自定义用户模型,确认:

  • settings.py中已正确设置AUTH_USER_MODEL = 'userauths.你的用户模型类名',且该配置是项目初始化阶段就设置的(若之前使用过默认用户模型,必须彻底清理旧迁移记录)
  • userauths的迁移文件中没有错误的依赖声明

方法三:用--fake参数修正迁移历史(保留数据)

  1. 确保userauths的迁移文件已最新生成(执行过makemigrations userauths)
  2. 标记userauths.0001_initial为已应用状态:
    python manage.py migrate --fake userauths 0001_initial
    
  3. 重新执行admin应用的迁移:
    python manage.py migrate admin
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:49:58