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

Django删除测试模型后迁移报错ProgrammingError:表不存在

Django 删除模型的标准流程及报错解决

错误原因

你直接删除模型代码后,Django的迁移历史中仍存在该模型的创建记录,执行迁移命令时会尝试访问已不存在的数据表,因此抛出django.db.utils.ProgrammingError: table "members_test" does not exist错误。

标准删除模型流程

如果还未删除模型代码,按以下步骤操作:

  • 保留模型代码,先执行python manage.py makemigrations,生成当前模型状态的迁移文件
  • 删除models.py中目标模型的代码
  • 再次执行python manage.py makemigrations,此时Django会自动生成删除对应数据表的迁移文件(文件名通常包含remove_xxx)
  • 执行python manage.py migrate,完成数据表删除和迁移历史更新

解决当前报错的方法

因为你已经删除了模型代码且数据表已不存在,可通过以下两种方式修复:

方法一:临时恢复模型代码

  1. 临时恢复members_test模型的代码(结构需和之前完全一致)
  2. 按照上面的标准流程重新执行,生成删除迁移并完成migrate
  3. 确认迁移完成后,即可删除模型代码

方法二:手动修正迁移历史

  1. 找到你的app下创建members_test表的迁移文件(比如0002_create_members_test.py)
  2. 执行命令:python manage.py migrate --fake [你的app名称] zero,这会标记该app的所有迁移已回滚,但不会实际操作数据库(因为表已不存在)
  3. 删除所有和members_test相关的迁移文件
  4. 执行python manage.py makemigrations生成新的迁移,再执行python manage.py migrate --fake-initial同步迁移历史(若有需要)

注意事项

  • 禁止手动删除数据库表,所有结构变更都通过Django迁移系统处理,避免迁移历史混乱
  • 迁移文件需纳入版本控制,团队协作时确保所有人使用相同的迁移记录
  • 若测试模型还未执行migrate,直接删除代码即可,无需走迁移流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:05:34