我使用飞路错了吗?

我有多个脚本需要对数据库运行。 就我而言,将每个版本的脚本迁移到一个绝对不可行的任务。

然而,几次提到的解决方法是制作小版本脚本,这也是我所期望的。 如果我有4个小脚本需要运行,我希望在同一个事务中拥有全部4个脚本。 所以如果4/4失败,前3应该回滚。

我更加困惑,如果我从2 – > 4和3通过升级系统,而4失败。 我仍然处于困境,希望v3回滚足够好。

我是否在命令行界面中错过了某些东西,我可以告诉flyway在单个事务中迁移所有内容。 或者“testing”迁移并将所有事情都回滚一下,让我知道迁移是否会在没有实际承诺的情况下运行。

编辑

==== ====上下文

我在一个有多个完整堆栈开发人员的环境中工作。 我们在哪里不断添加和改变function。 正因为如此,我们都有自己的数据库。 每个更改都会被编写脚本,以便一旦脚本影响我们的分支或集成分支时,可以将更改应用到数据库。

因为在多台机器之间进行时,每个版本都有多个脚本。

说明每个开发人员必须不断地更新一个给定的文件是不可行的。 将开发机器与分段和生产数据库采用不同的版本scheme也是不明智的。 更不用说这会在合并分支时造成的。

另外在合并时,如果有一个问题已经发挥了剧本的顺序。 整个集合应该回滚,直到可以发生干净的迁移。

我们有我们自己的移植工具,我唯一面临的问题是,它不能在docker工作,我希望不必改变它。

我的意思是用命令行不可能运行每个脚本运行在一个事务中,但是当你创build一个脚本时,你可能运行一个事务。

例如:

  • 下载flyway。

    wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/4.1.2/flyway-commandline-4.1.2-linux-x64.tar.gz 
  • 提取flyway(你必须安装java)。

     tar zxvf flyway-commandline-4.1.2-linux-x64.tar.gz 
  • 去飞路

     cd flyway-4.1.2 
  • 在/conf/flyway.conf中configuration

     flyway.url=jdbc:h2:file:./foobardb flyway.user=SA flyway.password= 
  • 在/ sql目录中创build名为Vx__xxxxxx.sql的空迁移

     select 1; 
  • 在一个脚本中创build每个迁移的迁移/ sql Vlast_xxx.sql谁在一个事务中运行。

     create table ...; create table ..; create procedure ...; 
  • 运行迁移

     flyway-4.1.2> flyway migrate 

在命令之前的docker使用运行,我想你知道。

这只是一个模板,但经过一些修复,可能会很好。