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
相关产品推荐
相关产品推荐

