我正在使用 Django 1.9 开发应用
我从 User
模型创建了一个更改字段(max_length 从 40 到 120)。
我知道迁移还没有运行,我可以看到它明显被跳过了。
我似乎无法理解为什么会这样。
我确保依赖项也到位。
我尝试过的事情:
1- 验证数据库没有将其表示为运行(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_
之后,跳过文件而不是实际检查它是否应用于数据库。
修复:我基本上将文件名从 0021_alter_user_lms_user_id
重命名为 0023_alter_user_lms_user_id
(不要忘记更新依赖项)并运行 。/manage.py migrate
并且没有任何问题。查看图像。
希望这对某人有帮助。
关于python - Django 跳过特定的迁移(没有要应用的迁移),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42078945/