django.db.utils.OperationalError: (1050, “Table ‘你的表名‘ already exists“)

这个错误意味着 Django 尝试执行迁移时,发现数据库中已经有一张叫 你的表名的表了,但这张表不是通过 Django 当前的迁移系统管理的,或者迁移状态和数据库实际状态不一致。

🧠 可能出现这个问题的几种情况:

复制代码
1.你手动创建过这张表;
2.你曾经运行过迁移,但删除了迁移文件,没有同步清除数据库记录;
3.数据库是旧的,或者有测试残留;

✅ 解决方法(几个选项):

✅ 方案一:数据库表已存在、但你确定是正确的表结构,可以"假装"迁移已执行

运行:

复制代码
python manage.py migrate --fake core

这会告诉 Django:"我确认这张表已经存在了,不要再执行创建操作了,但请把迁移状态标记为已完成。"

你也可以针对某个特定迁移,例如:

复制代码
python manage.py migrate core 0019 --fake

✅ 方案二:如果你是本地测试环境,可以重建数据库

如果你是本地开发测试,还可以彻底清除并重建数据库:

复制代码
# 警告:这会清除所有数据
python manage.py flush
# 或者更狠:
python manage.py migrate --fake core zero
# 然后重新迁移
python manage.py migrate

✅ 方案三:手动删除表(慎用)

如果你确定这张表没有用、是残留的:

复制代码
DROP TABLE xss_inventory_log;

然后重新执行迁移:

复制代码
python manage.py migrate

📝 建议

使用 --fake 方式是最常见的解决方案,尤其适合你手动同步了数据库,但 Django 认为没执行。

在多人协作或生产环境中,建议不要轻易删表或强制迁移,防止数据丢失。

相关推荐
TE-茶叶蛋3 小时前
TF-IDF 与 BM25 深度解析:从理论到项目实战
python·django·tf-idf
En^_^Joy6 小时前
Django开发:模板系统入门指南
数据库·django·sqlite
医用门8 小时前
病房门安装流程和注意事项
django
Wonderful U1 天前
Python+Django实战|在线音乐分享平台:音乐上传、歌手专辑管理、在线播放、自定义歌单、收藏点赞、评论互动
开发语言·python·django
王小王-1232 天前
基于Django的个性化餐饮场所推荐系统
后端·python·django·个性化餐厅推荐·个性化餐饮推荐
Wonderful U2 天前
Python+Django实战|个人&家庭记账理财系统:多账户管理、收支分类、日常记账、预算管控、账单检索、数据可视化、报表导出
python·信息可视化·django
li-xun3 天前
我给自己的 Django 博客做了一个在线工具箱:从图片压缩到正则测试,尽量都在浏览器本地处理
后端·python·django
Wonderful U3 天前
Python+Django实战|线上问卷与投票调研系统:自定义题型、问卷发布、链接分享、答卷收集、数据可视化、报表导出
python·信息可视化·django
Wonderful U3 天前
Python+Django实战|社区物业管理系统:业主档案、车位管理、物业费收缴、线上报修、投诉建议、园区公告、日常巡检
android·python·django
不考研当牛马4 天前
Django 框架 深度学习 第二课程
后端·python·django