我正在尝试使用flyway,但我有一个不知道如何解决的场景:
当我应用STANDARD脚本时,我必须运行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
我如何处理这种情况?
答案 0 :(得分:3)
使用以下结构:
└── 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");
flyway.setLocations("filesystem:sql/sql_common",
"filesystem:sql/sql_customer1");
flyway.setLocations("filesystem:sql/sql_common",
"filesystem:sql/sql_customer2");
这种情况下,每个案例只有1个迁移,v1.0。