Django跳过特定的迁移(No Migrations to apply)

时间:2017-02-06 23:08:46

标签: python django migration python-3.5 migrate

我正在使用Django 1.9上的应用程序

我从User模型创建了一个改变的字段(max_length从40改为120)。 我知道迁移没有运行,我可以看到它显然被跳过了。 我似乎无法理解为什么会这样。
我确保依赖关系也已到位。
我试过的事情:
1-验证数据库没有说它为run(django_migrations表): 看,没有0021_alter_user_lms_user_id

django_migrations table

2-我检查django是否能够看到迁移文件:

django showmigrations command result

我对这个结果感到非常惊讶。 我无法清除迁移或数据库,因为这是一个带有数据的已部署应用程序。

感谢任何帮助

注意:我在发布此问题之前检查了我可以找到的所有相关问题。

1 个答案:

答案 0 :(得分:1)

我自己修复了它,并希望这有助于其他人遇到与Django相同或类似的问题。

似乎 Django不仅检查迁移是否按文件名运行,而且还注意文件名中的前导数字对文件的顺序 (至少根据我的经验)。
步骤的历史:

git branch a :为0021_alter_user_lms_user_id创建迁移,但尚未合并为主。

git branch b :为0022_toolconsumer_is_vericite_enabled创建了迁移(我认为我应该按照顺序并使用0022_手动输入文件名)

现在,我将 git branch b 合并到master并运行迁移。 所以现在当我将 git branch a 合并到master并希望运行迁移时,django会看到文件,但是0022_假设0021_之后,假设它跳过文件而不是实际检查它是否正确适用于db。

修复:我基本上将文件名从0021_alter_user_lms_user_id重命名为0023_alter_user_lms_user_id(不要忘记更新依赖关系)并运行./manage.py migrate并使用没有问题。看图像。

working migration result screen capture

希望这有助于某人。