指定应用程序或项目中迁移的向后兼容性深度(django)
通常在开发django应用程序时,模型会发生变化,因此会添加迁移。IMHO一个好的实践是,通过不显示新功能,使新数据库模式的新代码也与旧模式兼容 例如,如果为纵断面照片添加了包含边界框的函数,则如果相应的表没有此边界框的字段,则此功能不存在。这种优雅的降级可以让网站保持运行,即使还没有执行所有迁移 这消除了更新实时部署期间的一些压力。分布式web节点可以一次更新一个,迁移在最后完成 然而,优雅的退化只能走这么远,在某种程度上,无休止的落后可比性负担对发展资源的消耗太大了。然而,系统管理员不可能意识到这个迁移代码差距有多大,口头交流很容易变得嘈杂。一周后,开发人员可能已经忘记了某些版本向后迁移的兼容性 这让我想知道,应用程序或项目能否指定它与哪些迁移兼容 如果不是,那么n个web节点和一个数据库的良好更新顺序是什么指定应用程序或项目中迁移的向后兼容性深度(django),django,django-migrations,Django,Django Migrations,通常在开发django应用程序时,模型会发生变化,因此会添加迁移。IMHO一个好的实践是,通过不显示新功能,使新数据库模式的新代码也与旧模式兼容 例如,如果为纵断面照片添加了包含边界框的函数,则如果相应的表没有此边界框的字段,则此功能不存在。这种优雅的降级可以让网站保持运行,即使还没有执行所有迁移 这消除了更新实时部署期间的一些压力。分布式web节点可以一次更新一个,迁移在最后完成 然而,优雅的退化只能走这么远,在某种程度上,无休止的落后可比性负担对发展资源的消耗太大了。然而,系统管理员不可能意
此类规范允许更新警告数据库是否兼容,反之亦然。迁移数据库时,可能还存在过时的web节点。有一些因素使迁移与旧版本的代码不兼容:
- 添加
列非空
- 删除列(在旧版本中仍使用该列时)
- 重命名列
- 更改列(例如更改类型)
- 重命名表