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