如何清除Django中的迁移历史?实操遇问题求助
解决Django无法清除迁移历史的方案
彻底重置迁移的步骤
清理迁移文件
- 找到每个App下的
migrations文件夹,删除其中除__init__.py外的所有文件;若已删除整个文件夹,需为每个App重新创建migrations文件夹及空的__init__.py文件。
- 找到每个App下的
删除数据库文件
- 执行命令删除SQLite数据库:
del /q db.sqlite3 - 若使用PostgreSQL/MySQL等数据库,直接清空或重建对应数据库即可。
- 执行命令删除SQLite数据库:
清除编译缓存文件
- 清理
.pyc文件:del /s /q *.pyc - 也可直接删除所有
__pycache__文件夹,清理更彻底。
- 清理
重新生成初始迁移
- 对单个App生成初始迁移:
python manage.py makemigrations <app_name> - 对所有App批量生成:
python manage.py makemigrations
注:若之前删除了
migrations文件夹,执行该命令会自动重建,需确保INSTALLED_APPS中已正确配置目标App。- 对单个App生成初始迁移:
标记初始迁移为已应用
- 执行fake迁移,让Django认定初始迁移已完成:
python manage.py migrate --fake-initial - 若仍有问题,先清除指定App的迁移记录:
python manage.py migrate --fake <app_name> zero
完成后重新执行
makemigrations和migrate即可。- 执行fake迁移,让Django认定初始迁移已完成:
常见排查点
- 检查
INSTALLED_APPS配置,确认没有遗漏需要迁移的App。 - 验证模型文件无语法错误,确保Django能正确识别模型变化。
- 多人协作项目需检查是否存在其他分支迁移文件残留,或.gitignore未排除迁移文件导致的冲突。
内容的提问来源于stack exchange,提问作者StJoesy
相关产品推荐
相关产品推荐

