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

我正在开发Django 1.9的应用程序

我在User模型中创建了一个改变的字段(max_length从40改为120).
我知道迁移没有运行,我可以看到它显然被跳过了.
我似乎无法理解为什么会这样.

我确保依赖关系也已到位.

我试过的事情:

1-验证数据库没有说它为run(django_migrations表):
看到没有0021_alter_user_lms_user_id

《python – Django跳过特定的迁移(No Migrations to apply)》

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

《python – Django跳过特定的迁移(No Migrations to apply)》

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

任何帮助表示赞赏

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

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

似乎Django不只是检查迁移是否按文件名运行,而且还注意文件名中前导数字的文件顺序(至少根据我的经验).

步骤历史:

git branch a:为0021_alter_user_lms_user_id创建迁移,但尚未合并到master中.

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并且没有任何问题.看图像.

《python – Django跳过特定的迁移(No Migrations to apply)》

希望这有助于某人.

点赞