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

Django项目admin后台更新用户报no such table: main.auth_user__old错误如何解决

问题根因

这个报错是Django 2.0.x及更早版本与SQLite 3.26及以上版本的兼容性问题。SQLite 3.26版本修改了ALTER TABLE语句的默认行为,Django旧版本的ORM处理表重命名的逻辑未适配该变动,执行数据更新操作时会试图访问不存在的*__old格式临时表,最终抛出该错误。你使用的Django 2.0.7早已停止维护,和Python 3.9、新版系统内置的SQLite版本天然不兼容,和你的操作步骤无关。

解决方法(优先推荐)

升级Django到兼容版本即可解决,该方案不会影响你跟着现有教程学习:

  • 激活项目对应的虚拟环境,执行升级命令:pip install django==2.2.28(2.2为长期支持版本,兼容Python 3.9,和Django 2.0的语法差异极小)
  • 删除项目根目录下的db.sqlite3数据库文件,删除项目内每个app下migrations目录中除__init__.py外的所有文件
  • 重新执行数据库迁移:
    python manage.py makemigrations
    python manage.py migrate
    
  • 重新创建超级管理员账号:python manage.py createsuperuser
    操作完成后再次进入admin后台修改用户信息即可正常运行。

可选方案(不推荐)

如果必须使用Django 2.0.7,需要将SQLite版本降级到3.25及以下,该方案需要修改系统依赖或单独编译SQLite,操作复杂度高,不建议新手使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:45:02