如何控制flyway可重复脚本的执行顺序

Posted

技术标签:

【中文标题】如何控制flyway可重复脚本的执行顺序【英文标题】:How to control execution order of flyway repeatable scripts 【发布时间】:2016-07-14 20:25:18 【问题描述】:

有没有办法控制flyway中可重复迁移脚本的执行顺序? 我想在校验和更改的所有其他可重复或版本控制脚本之后运行可重复迁移脚本。

【问题讨论】:

我不明白您的要求,但我猜您正在寻找一种无需任何顺序即可执行迁移的方法。如果这是您需要的,请使用此“outOfOrder”。将此值设置为 true 但是这个选项有一个潜在的问题。使用 schema_version 表验证您的迁移文件是否有任何遗漏的脚本。 我们可以通过设置版本号来指定版本化迁移脚本的执行顺序。但是我没有找到任何方法来对可重复迁移脚本的执行进行排序。我的问题是关于可重复迁移的。 outOfOrder 是关于版本化的迁移。 【参考方案1】:

可重复的脚本似乎由R__ suffixfirst numericalpha upper casealpha lower case 之后的名称控制。

它们不是只运行一次,而是在每次校验和更改时(重新)应用。

在单次迁移运行中,可重复的迁移总是在所有待处理的版本化迁移都已执行之后才应用。

https://flywaydb.org/documentation/migrations#repeatable-migrations

【讨论】:

对于 flyway 调用的 repeatable 脚本,您可以通过执行以下操作指定顺序:R__01_mustberunfirst.sql、R__02_mustberunsecond.sql 等...【参考方案2】:

也许以正确的顺序命名脚本是不够的。如果你将它们命名为R__AR__BR__C,它第一次可以工作,但是当你以后只更改R__B 时,那么只会执行R__B。如果后续脚本应该重新执行但没有更改,这可能是一个问题。例如,R__B 创建一个表,R__C 插入一些静态数据。

【讨论】:

那还应该做些什么来控制订单呢?说某事不起作用看起来不像是解决问题的方法 上述问题现在可以通过内置的$flyway:timestamp 替换来解决,它可以在每次可重复迁移之前添加(例如作为 SQL 注释)。跨度>

以上是关于如何控制flyway可重复脚本的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本应用

Jmeter如何控制线程执行?

Flyway 始终执行可重复的迁移

Flyway 可重复迁移 - 在版本化迁移之前执行?

Shell脚本编程——基础篇

Linux shell脚本流程控制