使用 flyway 修补多个相同的模式

Posted

技术标签:

【中文标题】使用 flyway 修补多个相同的模式【英文标题】:using flyway to patch multiple identical schemas 【发布时间】:2013-03-06 18:42:49 【问题描述】:

我已经彻底阅读了 flyway 文档,但我不清楚我想要的场景是否可能。我需要在同一个数据库中修补许多相同的模式,但我在编写 sql 脚本时并不知道所有模式的名称。

我知道 schemas 参数,但FAQ 中提到的两种可能的策略不适用于我的场景。

该场景类似于为学生提供架构的大学:

我想为对象提供不带架构前缀的 sql 脚本 每个架构都应该有自己的 schema_version 表 在 flyway 上:迁移 schemas 参数中定义的每个模式都应该单独修补,即 sql 脚本应该在每个模式中运行。

我知道一个潜在的问题是,“模式”在 f.ex 中意味着不同的东西。 oracle 比在 postgres 中,所以我想知道是否有任何其他推荐的方法来实现这一点。

否则我正在考虑自己实现这个功能......如果我们自己做的话,有没有机会在上游获得这个功能?

谢谢:)

【问题讨论】:

【参考方案1】:

您最好的机会是使用一种方法来包装 Flyway,该方法将列出适用的架构,然后在每个架构运行一个 Flyway,并将架构属性设置为正确的。

这确实是一个不错的功能,所以目前我想说看到它包含在主发行版中的机会非常渺茫。

【讨论】:

这就是我们所做的,它绝对是一个狭窄的用例。我们有一个服务(从我们的应用程序或新的 maven 插件调用),它查询数据库的模式名称并循环它们更新 flyway 对象上的 setSchema() 并为每个调用 migrate()。

以上是关于使用 flyway 修补多个相同的模式的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flyway 和 Spring Boot 迁移具有不同生命周期的多个模式

如何将多个sql脚本执行到具有相同版本的flyway中

从 Java 代码中使用 Flyway 创建新模式

如何将 Flyway 迁移与单个架构和多个项目一起使用

flyway - 一种分布式的方式?

使用 Flyway 部署到多个模式