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

Django报OperationalError:不存在polls_band表,执行迁移仍未解决

解决Django迁移后仍出现SQLite执行错误的问题

我太懂这种明明执行了迁移还是报错的困惑了——之前开发Django项目时也踩过类似的坑,咱们一步步来排查:

首先先把你提供的错误栈补全展示(看起来内容有点截断了,建议后续补充完整的错误提示,比如最后一行的具体SQL异常信息,这对定位问题至关重要):

Traceback (most recent call last):
File "C:\Users\Ethan\Envs\OnNote\lib\site-packages\django\db\backends\utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "C:\Users\Ethan\Envs\OnNote\lib\site-packages\django\db\backends\sqlite3\base.py", line 328, in execute
return Database.Cursor.execute(self, query, params)

基于现有信息,给你几个常见的排查方向:

  • 先确认迁移是否真的生效
    运行 python manage.py migrate --list 查看所有迁移的状态,看看有没有标记为[X]的已应用迁移,以及是否有未应用的条目。有时候执行migrate时看似成功,但实际因为迁移文件语法错误、数据库锁等问题导致没真正执行。

  • 核对模型与迁移文件的一致性
    如果你手动修改过模型但没生成新的迁移,或者迁移文件被误改,就会出现模型和数据库结构不匹配的情况。可以先执行 python manage.py makemigrations,如果提示“no changes detected”,说明模型和迁移是一致的;如果生成了新的迁移,再重新执行migrate试试。

  • 注意SQLite的Schema变更限制
    SQLite对某些数据库结构修改(比如修改字段类型、删除字段、重名字段)支持有限,Django处理这类操作时可能会有兼容问题。如果你的迁移涉及这类操作,可以试试:

    1. 先备份当前的db.sqlite3文件
    2. 删除数据库文件,重新执行python manage.py migrate初始化(适合开发环境,数据不重要的情况)
    3. 或者使用专门适配SQLite的工具辅助处理复杂变更
  • 检查数据库文件的权限和路径
    确认Django配置里的DATABASES设置的路径正确,当前用户对db.sqlite3文件有读写权限。有时候权限不足会导致迁移无法写入数据库,看似执行成功但实际没生效。

最后,一定要把错误栈的最后一行补充完整——通常会有类似OperationalError: no such table: myapp_mymodel或者column myapp_mymodel.new_field does not exist的具体提示,这能直接帮我们锁定问题点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:41:42