【问题标题】:How to do Flyway deployments in multiple stages如何在多个阶段进行 Flyway 部署
【发布时间】:2022-06-16 17:47:10
【问题描述】:

我们在多个应用程序上成功使用 Flyway,现在我们需要在多个阶段运行其中的一些:

  1. 运行数据库清理脚本(截断表等)
  2. 执行一些部署步骤
  3. 运行其他数据库脚本(架构更改、插入新数据等)

在多个版本中可能需要第一步,因此我们可以将其标记为可重复迁移,而不是正常迁移。但是,它不应该在所有版本上运行,只有在需要时才运行。

请问您知道如何做到这一点吗?我假设我们可以先运行可重复的迁移脚本,然后将其他脚本添加到迁移文件夹并运行第二个迁移步骤。

  • 我们可以选择何时运行这些可重复的迁移吗?例如。提供标志或特定文件夹?
  • 如果我们修改那些可重复的脚本,Flyway 会抱怨吗?例如。如果我们想在清理脚本中添加更多列/表。我们也许可以通过运行修复命令来解决它。 谢谢

【问题讨论】:

  • 我删除了 标签,因为它与 SQL 语言, 无关

标签: database deployment flyway


【解决方案1】:

仅当自上次应用后校验和发生更改时,才会再次运行可重复迁移。校验和是根据文件内容计算的,因此您可以通过更改它来触发可重复的迁移以重新应用。这包括占位符值,因此例如包含 ${flyway:timestamp} 占位符的可重复迁移将始终重新应用,因为它的值不断变化。

  • 通过在可重复迁移中包含${flyway:timestamp}(例如在评论中),如果找到它,它将始终重新应用,但您可以通过将其存储在单独的文件夹中来控制何时发生这种情况,该文件夹仅在您需要时配置运行它。

要包含可重复的迁移:

./flyway migrate "-locations=migrations,repeatable_migration"

排除它:

./flyway migrate "-locations=migrations" "-ignoreMissingMigrations=true"
  • 这意味着您可以修改可重复脚本而不会导致任何问题,因为校验和无论如何都会改变 - 无需运行 repair

【讨论】:

    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 2020-04-07
    • 2022-12-19
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2019-01-25
    相关资源
    最近更新 更多