2017-02-21 27 views
1

Я пытаюсь использовать пролетный путь, но у меня есть сценарий, который не знает, как решить:пролетного путь условного дб миграция

Когда я применяю стандартные сценарии, я должен бежать 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 папки должны всегда быть применены, но V1.0 (создать таблицу Tab1), если применить к сценарию customer1 не следует применять. На месте его применения V1.0__create_view_TAB1_to_schema1.sql

Как я могу справиться с этим случаем?

ответ

1

Используйте следующую структуру:

└── 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().

  • Regular: flyway.setLocations("filesystem:sql/sql_common", "filesystem:sql/sql_regular");
  • customer1: flyway.setLocations("filesystem:sql/sql_common", "filesystem:sql/sql_customer1");
  • customer2: flyway.setLocations("filesystem:sql/sql_common", "filesystem:sql/sql_customer2");

Таким образом, будет ровно 1 миграции с версии 1.0 на случай.