使用 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 修补多个相同的模式的主要内容,如果未能解决你的问题,请参考以下文章