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

Azure SQL Server上Django自定义认证报错:找不到users_user表

解决Django自定义User模型引发的'users_user'对象不存在错误

原因排查与修复步骤

1. 核对自定义User模型的核心配置

先检查项目根目录的settings.py,得确保两点:

  • users应用已经加入INSTALLED_APPS
  • 正确指定了自定义User模型
INSTALLED_APPS = [
    # ...其他默认应用
    'users',
]

AUTH_USER_MODEL = 'users.User'

注意:一定要在第一次执行迁移前就设置AUTH_USER_MODEL,如果之前已经生成过默认的auth_user表,后续修改会触发额外的兼容问题

2. 重新生成并执行迁移

大概率是自定义User模型的迁移没正确同步到Azure SQL Server,按以下步骤操作:

  • 删除users应用下migrations文件夹里除了__init__.py之外的所有迁移文件
  • 执行命令重新生成针对users应用的迁移:
python3 manage.py makemigrations users
  • 把迁移同步到Azure SQL Server:
python3 manage.py migrate

可以加--verbosity 2参数看详细日志,确认users_user表是否被成功创建:

python3 manage.py migrate --verbosity 2

3. 检查数据库权限与表存在性

登录Azure SQL Server的管理界面,直接查看是否存在users_user表。同时确认连接数据库的账号有创建表的权限,权限不足可能导致迁移命令显示成功,但实际表没创建。

4. 确认自定义User模型的代码正确性

检查users/models.py里的User模型定义,确保继承了AbstractUser,示例:

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    # 可以添加自定义字段,比如手机号
    phone = models.CharField(max_length=11, blank=True)
    
    class Meta:
        db_table = 'users_user'  # 这里的表名要和报错里的一致,也可以不指定让Django自动生成

5. 清理迁移历史(极端情况)

如果前面的步骤都没用,可能是迁移历史出现了脏数据:

  • 登录Azure SQL Server,删除django_migrations表中所有和users应用相关的记录
  • 重新执行makemigrations和migrate命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:06