为什么flyway在将outOfOrder设置为true时会产生警告信息?

时间:2013-03-06 08:29:36

标签: java flyway

outOfOrder设置为true时,我在日志中收到以下警告消息:

  

警告:outOfOrder模式处于活动状态。迁移运行可能无法重现。

此消息的确切含义是什么?如果有人能告诉我迁移发生时会发生什么,那将会很好。任何例子都会有所帮助。

2 个答案:

答案 0 :(得分:6)

假设3次迁移:

  1. 创建两个名称'Tom'和'Jerry'
  2. 添加'Mickey'作为第三个
  3. 将名称转换为大写
  4. 使用outOfOrder运行可能会导致您的迁移应用如下:

    1,3,2 - >在DB:TOM,JERRY,Mickey

    稍后重新运行它将产生

    1,2,3 - >在DB:TOM,JERRY,MICKEY

    这就是为什么outOfOrder具有潜在危险性,并且第一次迁移可能无法重现。

答案 1 :(得分:4)

要添加到Axel的答案中,结果数据不仅可能因顺序而异,而且甚至无法进行迁移。考虑:

迁移:

  1. 创建表格foo
  2. 添加列foo.bar
  3. 将列foo.bar重命名为foo.baz
  4. 执行顺序:

    • 1,2,3→foobaz
    • 1,3,...→错误应用3:找不到列foo.bar
    • 2,...→错误应用2:找不到表foo
    • 3,...→错误应用3:找不到表foo