通常,数据库的模式会随着时间的推移而变化。在两次构建之间,可能会发生零到多个架构更改。捕捉这些变化的“最佳实践”是什么?
例如,假设两个开发人员正在处理一个项目,并使用git进行源代码控制。他们同意在周五进行一次构建。每个人都开始自己的工作,用更新到当前模式的数据库迁移脚本检入更改。当用户A获得用户B的更改时,他们如何轻松知道要运行哪些升级脚本?当一个人查看服务器上的数据库时,他们如何知道自己在哪个版本上?如果数据库捕获了版本号,这意味着在周五,团队中的一个人必须对其他所有人说:“好的,每个人都签入,然后我将编写一个脚本,将版本号更新到下一个版本并签入。”
有没有一种标准的方法来解决这个问题?谢谢。
发布于 2011-08-29 14:51:00
考虑为每个数据库结构更改编写一次迁移,而不是为系统的稳定版本编写一次迁移。就像代码的修订一样:每次更改都会更新系统并增加其修订版本(而不是版本)。
通常我们将数据库版本(以及'public‘版本)存储在一个特殊的表中。有时我们存储应用于此数据库的迁移脚本的名称,但这是更复杂的解决方案。在文件名中应用迁移之后,可以很方便地引入数据库的修订。迁移脚本的最后一行更新了特定表中的迁移版本。
要确定哪些迁移应用于具体开发人员的数据库,只需获取存储在特定表中的所有修订号高于数据库修订号的迁移。
https://stackoverflow.com/questions/7198374
复制相似问题