通常,当开发django应用程序时,模型会发生变化,因此会添加迁移。恕我直言,一个好的做法是使用于较新数据库模式的新代码也与旧模式兼容,可能不显示新功能。
例如,如果添加包含配置文件照片的边界框的功能,如果相应的表没有此边界框的字段,则此功能不存在。即使并非所有迁移都已执行,这种优雅降级也可以使网站保持运行。
这可以消除更新实时部署期间的一些压力。可以一次更新一个分布式Web节点,并在最后完成迁移。
尽管如此,优雅的退化只能到目前为止,在某种程度上,无休止的可比性的负担是对开发资源的过度消耗。但是,不能指望系统管理员知道这种迁移代码差距有多大,语言通信很容易变得嘈杂。一个星期后,开发人员可能已经忘记了迁移向后兼容某些版本是什么。
这让我想知道,应用程序或项目是否可以指定与哪些迁移兼容?
如果没有,那么 n Web节点和一个数据库的更新顺序是什么?
此类规范将允许更新以警告数据库是否兼容,反之亦然,也可能是在迁移数据库时是否存在过时的Web节点。
答案 0 :(得分:1)
有一些因素导致迁移与旧版本的代码不兼容:
NOT NULL
列有一个名为migration-linter的项目可以帮助以自动方式检测这些向后不兼容的迁移。
希望有所帮助。