我正在开发Django 1.9的应用程序
我在User模型中创建了一个改变的字段(max_length从40改为120).
我知道迁移没有运行,我可以看到它显然被跳过了.
我似乎无法理解为什么会这样.
我确保依赖关系也已到位.
我试过的事情:
1-验证数据库没有说它为run(django_migrations表):
看到没有0021_alter_user_lms_user_id
2-我检查django是否能够看到迁移文件:
我对这个结果感到非常惊讶.
我无法清除迁移或数据库,因为这是一个带有数据的已部署应用程序.
任何帮助表示赞赏
注意:我在发布此问题之前检查了我可以找到的所有相关问题.
最佳答案 我自己修复了它,并希望这有助于其他人遇到与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并且没有任何问题.看图像.
希望这有助于某人.