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

Django migrate命令未使用最新迁移文件的问题解决求助

解决Django迁移始终尝试应用旧迁移文件的问题

步骤1:检查迁移状态记录

进入数据库shell执行查询,确认django_migrations表中目标应用的迁移记录:

SELECT * FROM django_migrations WHERE app='app_name';

查看结果里哪些迁移文件被标记为applied。如果发现迁移3未被标记,但迁移4、5也没有记录,同时数据库表已经存在,说明迁移记录和实际数据库状态不一致。

步骤2:手动标记迁移为已应用

如果确认迁移3到5的所有变更已经在数据库中生效(比如表结构和最新模型完全匹配),可以用--fake参数强制标记迁移为已应用:

# 直接标记到最新的5号迁移
./manage.py migrate app_name --fake 0005

如果迁移3本身也已经实际应用但未被记录,先标记3再标记5:

./manage.py migrate app_name --fake 0003
./manage.py migrate app_name --fake 0005

步骤3:排查迁移文件依赖

检查迁移文件(0003、0004、0005)开头的dependencies字段,确认依赖关系是否正确。比如0004的依赖应该是['app_name.0003'],0005的依赖应该是['app_name.0004']。错误的依赖会导致Django认为必须先执行未完成的旧迁移。

极端情况处理(谨慎操作)

如果上述方法无效,且确认数据库结构和最新模型完全一致,可以重置迁移记录:

  1. 务必先备份数据库,避免数据丢失
  2. 删除django_migrations表中该应用的所有记录:
DELETE FROM django_migrations WHERE app='app_name';
  1. 重新标记所有迁移为已应用:
./manage.py migrate app_name --fake-initial

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:31:07