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

升级Django到V2.0后执行迁移报错auth_user不存在,求解决方案

解决Django 2.0迁移时"auth_user does not exist"的问题

我之前升级到Django 2.0时也碰到过完全一样的问题,之前1.8那套migrate auth再全量迁移的方法不管用,折腾了好一阵才找到几个可行的方案,分享给你:

方案一:检查自定义用户模型的迁移顺序(如果用了自定义User)

如果你的项目里设置了AUTH_USER_MODEL自定义用户模型,这很可能是迁移顺序冲突导致的:

  • 先把所有非用户模型所在app的迁移文件,临时移到项目根目录的一个临时文件夹(比如temp_migrations),只保留自定义用户模型所在app的迁移文件
  • 执行python manage.py makemigrations确保用户模型的迁移文件是最新的
  • 先跑python manage.py migrate完成用户模型的迁移
  • 把临时文件夹里的迁移文件移回各自app的migrations目录,再执行python manage.py migrate完成剩余迁移

方案二:重置迁移记录(仅开发环境适用)

如果是开发环境,数据可以重置的话,这个方法最直接:

  • 先备份你的数据库(别嫌麻烦,万一出问题还能恢复)
  • 删除所有app下migrations文件夹里除了__init__.py之外的所有迁移文件
  • 清空数据库(比如SQLite直接删除db.sqlite3,MySQL/PostgreSQL则删除对应数据库或清空所有表)
  • 先执行python manage.py migrate auth --fake-initial,这个命令会"假装"已经完成auth的初始迁移,避免后续冲突
  • 最后执行python manage.py migrate完成全量迁移

方案三:手动调整迁移文件的依赖关系

有些app的迁移文件可能在auth表创建之前就尝试引用auth_user,这时候需要手动修改迁移文件的依赖:

  • 找到报错的那个迁移文件,打开它修改dependencies列表,把auth的初始迁移加进去:
dependencies = [
    ('auth', '0001_initial'),
    # 保留原来的其他依赖
]
  • 保存后再依次执行python manage.py migrate auth和python manage.py migrate

另外要提醒一句:Django 2.0对用户模型的校验比旧版本更严格,如果是中途修改AUTH_USER_MODEL的话很容易出问题,最好是项目初始化时就确定好用户模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:44:17