通常,数据库的架构会随着时间而改变。在构建之间,可能发生零到多个模式更改。捕获这些变化的“最佳实践”是什么?
例如,假设2个开发人员正在开发一个项目并使用git进行源代码控制。他们同意在星期五建造。每个人都进行他们的工作,使用更新到当前模式的数据库迁移脚本检查更改。当人A获得B人的变更时,他们怎么能轻易知道要运行哪些升级脚本?当一个人在服务器上查看数据库时,他们如何知道他们所在的版本?如果数据库捕获版本号,这意味着在星期五,团队中的一个人不得不对其他人说“好的,每个人都签到,然后我将编写一个脚本,将版本号更新到下一个版本并检查它。“
有没有一种标准方法可以解决这个问题?感谢。
答案 0 :(得分:1)
考虑为每个数据库[结构]更改编写一个迁移,而不是每个稳定版本的系统。就像代码的修订一样:每次更改都会更新系统并增加它的修订版本(不是版本)。
通常我们将数据库修订版(以及“公共”版本)存储在特殊表中。有时我们存储应用于此数据库的迁移脚本的名称,但它是更复杂的解决方案。在文件名中应用迁移之后,将数据库的修订包括在内是很方便的。迁移脚本中的最后一行在特殊表中更新迁移版本。
要确定要应用于具体开发人员数据库的迁移,您只需执行版本号高于存储在特殊表中的数据库修订版的所有迁移。