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
可行解决步骤
方法一:彻底清理迁移记录(适合开发环境)
- 保持
django.contrib.admin的注释状态 - 直接操作数据库,找到
django_migrations表,删除所有app字段为admin和userauths的记录 - 再次删除
userauths/migrations下除__init__.py外的所有迁移文件 - 重新生成并执行迁移:
python manage.py makemigrations userauths python manage.py migrate - 取消
django.contrib.admin的注释(包括INSTALLED_APPS和urls.py配置) - 单独执行
admin应用的迁移:python manage.py migrate admin
方法二:修正自定义用户模型配置
如果使用了自定义用户模型,确认:
settings.py中已正确设置AUTH_USER_MODEL = 'userauths.你的用户模型类名',且该配置是项目初始化阶段就设置的(若之前使用过默认用户模型,必须彻底清理旧迁移记录)userauths的迁移文件中没有错误的依赖声明
方法三:用--fake参数修正迁移历史(保留数据)
- 确保
userauths的迁移文件已最新生成(执行过makemigrations userauths) - 标记
userauths.0001_initial为已应用状态:python manage.py migrate --fake userauths 0001_initial - 重新执行
admin应用的迁移:python manage.py migrate admin
内容的提问来源于stack exchange,提问作者Shubham Damai
相关产品推荐
相关产品推荐

