Flyway条件数据库迁移

teo*_*ost 3 oracle database-migration flyway

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

\n\n

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

\n\n

几乎:

\n\n
\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sql\n     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sql_common\n \xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 V0.0 __.... sql\n \xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 V1.0__create_table_TAB1.sql\n \xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sql_customer1\n \xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 V1.0__create_view_TAB1_to_schema1.sql\n  \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sql_customer2\n    \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 V1.0__create_view_TAB1_to_schema2.sql\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n

Axe*_*ine 5

使用以下结构:

\n\n
\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sql\n     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sql_common\n \xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 V0.0 __.... sql\n     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sql_regular\n \xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 V1.0__create_table_TAB1.sql\n \xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sql_customer1\n \xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 V1.0__create_view_TAB1_to_schema1.sql\n  \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sql_customer2\n    \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 V1.0__create_view_TAB1_to_schema2.sql\n
Run Code Online (Sandbox Code Playgroud)\n\n

与 Flyway.setLocations() 结合使用。

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

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

\n