为何清空迁移文件与数据库后,Django仍显示旧迁移记录?
解决Django迁移重置后仍显示旧记录的问题
1. 彻底清除本地app的迁移残留
- 直接删除项目中所有自定义app的
migrations文件夹(包括文件夹本身,而非仅删除内部文件),确保无任何隐藏残留文件。 - 检查项目目录下是否存在同名app的副本(比如子目录或其他路径下的重复app),这类副本可能被Django加载导致迁移记录残留。
2. 排查虚拟环境中的app副本
如果你的自定义app曾通过pip install -e .或pip install安装到虚拟环境:
- 激活虚拟环境,执行
pip uninstall your-app-name彻底卸载。 - 手动打开虚拟环境的
site-packages目录,确认该app的残留文件夹已完全删除。
3. 清空Django缓存
执行命令清空Django内置缓存:
python manage.py clearcache
若项目使用Redis、Memcached等第三方缓存服务,直接重启服务或清空对应缓存数据。
4. 重新生成并执行迁移
为自定义app生成初始迁移文件:
# 为单个app生成迁移 python manage.py makemigrations your-app-name # 为所有app批量生成迁移 python manage.py makemigrations
执行迁移同步数据库:
python manage.py migrate
5. 验证结果
执行python manage.py showmigrations,此时应仅显示新生成的迁移记录(第三方app的迁移属于正常显示,无需删除)。
额外排查点
- 检查
settings.py的INSTALLED_APPS配置,确保自定义app的路径正确,未指向旧文件位置。 - 确认IDE/编辑器未自动恢复已删除的
migrations文件夹(比如版本控制的恢复功能、本地备份机制)。 - 彻底关闭并重新打开终端窗口,避免终端缓存的环境变量或路径干扰。
内容的提问来源于stack exchange,提问作者Dev00
相关产品推荐
相关产品推荐

