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

Django执行migrate报错relation auth_user不存在 表创建失败问题求助

Django自定义User模型迁移报错排查方案

核心问题排查方向

  1. 模型app_label配置不匹配:你提供的User模型Meta中明确设置了app_label = 'admin_portal',如果你的这个模型实际放在app1目录下,Django会将该模型的迁移生成到admin_portal应用的migrations目录,而非app1目录,你执行migrate app1自然找不到对应迁移文件。
  2. 迁移执行顺序错误:app2的迁移依赖自定义User表,但运行全局migrate时app2的迁移先于User模型所属应用的迁移执行,导致找不到auth_user表。
  3. 迁移记录冲突:之前的错误迁移操作已经在django_migrations系统表中写入了app1的迁移记录,导致Django判定没有需要执行的迁移,但是实际数据库中没有创建对应表。

具体解决步骤

  • 第一步:修正配置对齐
    确认settings.py中AUTH_USER_MODEL参数与User模型的app_label保持一致:
    • 如果你希望该User模型归属app1:直接删除User模型Meta中的app_label = 'admin_portal'行,将AUTH_USER_MODEL设置为app1.User
    • 如果你希望该User模型归属admin_portal:将AUTH_USER_MODEL设置为admin_portal.User
  • 第二步:清理历史错误内容
    • 删除app1、app2、admin_portal三个应用下migrations目录中除__init__.py之外的所有文件
    • 开发环境无重要数据可直接删除项目数据库重建;有数据的话连接数据库清空django_migrations系统表的所有记录
  • 第三步:重新生成迁移文件
    执行python3 manage.py makemigrations,确认User模型对应的迁移文件生成在你配置的归属应用的migrations目录下
  • 第四步:按顺序执行迁移
    先执行User模型归属应用的迁移:
    python3 manage.py migrate <User归属应用名>
    
    执行成功后再运行全局迁移完成剩余应用的迁移:
    python3 manage.py migrate
    

额外检查项

如果app2的模型存在外键、多对多等关联User模型的字段,打开app2的迁移文件,确认其dependencies配置项中已经添加了User归属应用的初始迁移依赖,示例如下:

dependencies = [
    ('<User归属应用名>', '0001_initial'),
]

如果没有该依赖手动添加即可,避免后续迁移顺序混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:04