【发布时间】:2017-08-29 13:59:57
【问题描述】:
我有多个脚本需要针对数据库运行。就我而言,在每个版本的一个脚本中进行迁移是一项绝对不可行的任务。
但是,对于多次提到的解决方法,制作次要版本的脚本,这也不是我期望的方式。 如果我有 4 个小脚本需要运行,我希望所有 4 个脚本都在同一个事务中。所以如果 4/4 失败,之前的 3 应该回滚。
我对此更加困惑,如果我从版本 2 升级系统 --> 4 和 3 会通过,而 4 会失败。我陷入了困境,希望 v3 回滚足够好。
我是否缺少命令行界面的某些内容,我可以告诉 flyway 在单个事务中迁移所有内容。或者“测试”迁移并回滚所有内容,让我知道迁移是否可以在没有实际提交任何内容的情况下工作。
编辑
====上下文====
我在一个有多个全栈开发人员的环境中工作。我们不断添加和更改功能的地方。因此,我们都有自己的数据库。每个更改都会被编写脚本,因此一旦脚本影响到我们的分支或集成分支,更改就可以应用于数据库。
因此,在多台机器之间运行时,每个版本都有多个脚本。
声明每个开发人员必须不断更新一个给定文件是不可行的。因为让开发机器使用与登台和生产数据库不同的版本方案也是不明智的。更不用说在合并分支时这会导致地狱。
在合并时,如果存在与脚本顺序有关的问题。整个集合应该回滚,直到可以发生干净的迁移。
我们有自己的迁移工具,我面临的唯一问题是它还不能在 docker 中工作,我希望不必更改它。
【问题讨论】:
-
我只需要更改您问题的标题,使其作为技术问题而不是基于意见的问题有意义。您并不是真的在问您是否错误地使用了 Flyway(这对 SO 来说不是一个好问题)。您在问是否可以在同一个事务中运行多个脚本,这是一个很好的问题。我还删除了 docker 标签。您的问题与 Docker 无关。您以前的迁移工具不能在 Docker 上运行的事实充其量只是轶事。
标签: flyway