指定应用程序或项目中的向后兼容性迁移深度(django)

时间:2016-08-11 12:29:26

标签: django django-migrations

通常,当开发django应用程序时,模型会发生变化,因此会添加迁移。恕我直言,一个好的做法是使用于较新数据库模式的新代码也与旧模式兼容,可能不显示新功能。

例如,如果添加包含配置文件照片的边界框的功能,如果相应的表没有此边界框的字段,则此功能不存在。即使并非所有迁移都已执行,这种优雅降级也可以使网站保持运行。

这可以消除更新实时部署期间的一些压力。可以一次更新一个分布式Web节点,并在最后完成迁移。

尽管如此,优雅的退化只能到目前为止,在某种程度上,无休止的可比性的负担是对开发资源的过度消耗。但是,不能指望系统管理员知道这种迁移代码差距有多大,语言通信很容易变得嘈杂。一个星期后,开发人员可能已经忘记了迁移向后兼容某些版本是什么。

这让我想知道,应用程序或项目是否可以指定与哪些迁移兼容?

如果没有,那么 n Web节点和一个数据库的更新顺序是什么?

此类规范将允许更新以警告数据库是否兼容,反之亦然,也可能是在迁移数据库时是否存在过时的Web节点。

1 个答案:

答案 0 :(得分:1)

有一些因素导致迁移与旧版本的代码不兼容:

  • 添加NOT NULL
  • 删除列(在旧版本中仍然使用它)
  • 重命名列
  • 更改列(例如更改类型)
  • 重命名表格

有一个名为migration-linter的项目可以帮助以自动方式检测这些向后不兼容的迁移。

希望有所帮助。