使用 Flyway 部署到多个模式

Posted

技术标签:

【中文标题】使用 Flyway 部署到多个模式【英文标题】:Deploying to multiple schemas using Flyway 【发布时间】:2020-12-17 17:15:22 【问题描述】:

我有一个关于 Flyway 和管理多个架构的问题。我有多个架构(架构 1、架构 2、架构 3),具有不同的部署计划和不同的文件夹位置(sql/架构 1、sql/架构 2、sql/架构3)和不同的代码。

我想在代码部署之前使用 Flyway 创建架构,但如何在单个配置文件中进行设置?我阅读了 Flyway 文档 (https://flywaydb.org/documentation/faq#multiple-schemas),但该示例是否使用单个配置文件?还是我需要创建多个配置文件(每个架构一个)?

我可以实现相同的设置逗号分隔的架构列表吗?将“Schema1”仅查看“sql/Schema1”位置吗?我真的不希望 Schema1 从不同的文件夹中提取代码,即 sql/Schema2 等。

提前致谢!

【问题讨论】:

【参考方案1】:

当使用 Flyway 与多个架构时,您需要在 sql 语句中明确说明 sql 将更改哪个架构。您可以通过在每个迁移文件的顶部放置一个ALTER SESSION SET CURRENT_SCHEMA=schema1 来做到这一点,或者在您的所有语句前面加上CREATE TABLE schema1.bananas 之类的前缀。 如果这不切实际,最好创建多个配置文件,每个配置文件都指定一个模式,并指定一个位置。例如

flyway.schemas=schema1
flyway.locations=filesystem:sql/schema1

然后您可以使用每个配置文件单独运行 Flyway 以迁移该特定架构。

【讨论】:

以上是关于使用 Flyway 部署到多个模式的主要内容,如果未能解决你的问题,请参考以下文章

Flyway 数据库迁移到多个模式

多个实例指向同一模式的 Flyway 迁移

Flyway:如何支持清理具有相同生命周期的多个模式?

使用 Flyway 在多个模式上运行 SQL 脚本

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

Flyway 一个模式中的多个元数据表