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

Django自定义User模型报错no such table 无法创建超级用户求助

解决方案

报错根本原因

该报错是Django未成功生成Accounts应用下自定义User模型对应的数据库表导致,常见诱因有三个:

  • Accounts应用未添加到settings.py的INSTALLED_APPS配置中
  • 首次执行迁移后才修改AUTH_USER_MODEL配置,旧迁移文件与自定义用户模型冲突
  • 自定义User模型中字段配置有问题,导致迁移执行失败

开发环境快速修复(可删除测试数据的情况)

  1. 检查基础配置
    确认settings.py中存在以下配置,无拼写错误:
# 1. 已注册Accounts应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Accounts', # 必须存在该行
]

# 2. 自定义用户模型配置正确
AUTH_USER_MODEL = 'Accounts.User'

另外你当前模型中的phone字段为IntegerField且未设置允许为空或默认值,生成迁移时会要求输入默认值,可提前修改为允许为空避免后续报错:

# 原代码 phone = models.IntegerField() 替换为
phone = models.IntegerField(null=True, blank=True, verbose_name="手机号")
  1. 清理旧迁移和数据库
    删除项目根目录下的SQLite数据库文件db.sqlite3,再删除所有应用(含自带应用、Accounts应用)migrations目录下除__init__.py之外的全部文件。

  2. 重新执行迁移
    依次执行以下命令:

# 生成迁移文件
python manage.py makemigrations
# 执行迁移生成表
python manage.py migrate
  1. 创建超级用户
python manage.py createsuperuser

按提示输入邮箱、密码即可完成创建。


生产环境修复(不可删除现有数据的情况)

  1. 先回滚auth应用的所有迁移:
python manage.py migrate auth zero
  1. 删除Accounts应用下migrations目录中除__init__.py之外的所有文件
  2. 单独生成Accounts应用的迁移文件:
python manage.py makemigrations Accounts
  1. 执行全量迁移:
python manage.py migrate

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:03