Flyway条件数据库迁移

2024-04-08

我正在尝试使用 Flyway,但我有一个不知道如何解决的场景:

当我应用标准脚本时,我必须运行 V1.0__create_table_TAB1.sql 当我将脚本应用于 customer1 时,TAB1 表是一个视图,因此我必须运行 V1.0__create_view_TAB1_to_schema1.sql。

几乎:

└── sql
     ├── sql_common
     │   ├── V0.0 __.... sql
     │   └── V1.0__create_table_TAB1.sql
     ├── sql_customer1
     │   └── V1.0__create_view_TAB1_to_schema1.sql
     └── sql_customer2
         └── V1.0__create_view_TAB1_to_schema2.sql

应始终应用 sql_common 文件夹的脚本,但如果我应用于 customer1 脚本,则不应应用 V1.0(创建表 TAB1)。 取而代之的是应用 V1.0__create_view_TAB1_to_schema1.sql

我该如何处理才能防止这种情况发生?


使用以下结构:

└── sql
     ├── sql_common
     │   └── V0.0 __.... sql
     ├── sql_regular
     │   └── V1.0__create_table_TAB1.sql
     ├── sql_customer1
     │   └── V1.0__create_view_TAB1_to_schema1.sql
     └── sql_customer2
         └── V1.0__create_view_TAB1_to_schema2.sql

与 Flyway.setLocations() 结合使用。

  • 常规的:flyway.setLocations("filesystem:sql/sql_common", "filesystem:sql/sql_regular");
  • 客户1:flyway.setLocations("filesystem:sql/sql_common", "filesystem:sql/sql_customer1");
  • 客户2:flyway.setLocations("filesystem:sql/sql_common", "filesystem:sql/sql_customer2");

这样,每个案例都会有 1 次 v1.0 迁移。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flyway条件数据库迁移 的相关文章

随机推荐