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

Django升级后运行测试报relation "auth_user"不存在错误如何解决?

Django 1.9升级3.2后无迁移文件执行测试报错解决方案

报错根因

你本地缺失项目历史迁移文件,Django运行测试时会自动创建全新的测试库,没有迁移文件就无法执行表结构初始化,因此会抛出auth_user表不存在的错误。常规makemigrations检测不到变更,是因为当前连接的开发库已经存在对应表结构,Django会判定模型和数据库已同步。

可行解决方案

方案一:全量生成初始迁移文件(推荐,一劳永逸解决后续迁移问题)

  • 临时修改settings.py中的数据库配置,将数据库名改为一个不存在的空库名称,避免现有库表结构干扰迁移检测
  • 执行全量迁移生成命令:
    python manage.py makemigrations
    
    此时Django会检测到所有模型都需要初始化,自动为所有应用(包括auth等内置应用)生成初始迁移文件
  • 把数据库配置改回原来的开发库配置,执行fake迁移标记所有迁移已执行,不会修改现有库表:
    python manage.py migrate --fake
    
  • 将新生成的所有migrations目录下的文件提交到Git仓库,后续所有团队成员拉取后只需执行一次migrate --fake即可同步迁移状态
  • 再次运行测试命令即可正常初始化测试库

方案二:测试场景临时规避(仅应急使用)

如果不需要处理正式迁移流程,只是临时要跑测试,可以加--keepdb参数复用现有测试库,跳过销毁重建流程:

python manage.py test --keepdb

注意事项

Django 3.2默认主键字段从AutoField改为BigAutoField,如果你的生产库表主键仍为int类型,需要在settings.py中添加配置避免后续迁移出现字段类型不兼容问题:

DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:24:03