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