Liquibase множественное выполнение журнала изменений - PullRequest
1 голос
/ 24 мая 2019

Я использую SpringLiquibase для конфигурации liquibase, ниже конфигурация отлично работает с одним файлом журнала изменений (в формате sql)

@Configuration
@Slf4j
public class LiquibaseConfiguration {

  @Inject
  private DataSource dataSource;

  @Bean
  public SpringLiquibase liquibase() {
    log.info("################## Entering into liquibase #################");
    SpringLiquibase liquibase = new SpringLiquibase();
    liquibase.setDataSource(dataSource);
    liquibase.setChangeLog("classpath:schema/update-schema-01.sql");
    // Configure rest of liquibase here...
    // ...
    return liquibase;
  }
}

В моем приложении мне может потребоваться запустить more than one changelog файлы, и я не могу выполнить такое выполнение,
Я попытался накормить несколько журналов изменений следующим образом:

liquibase.setChangeLog ( "Путь к классам: Схема / обновление-схемы-01.sql");

liquibase.setChangeLog ( "Путь к классам: Схема / обновление-схемы-02.sql");

исполняется только один последний файл журнала изменений.

liquibase.setChangeLog ( "Путь к классам:. Схема / SQL *");

Получение ошибки как liquibase.exception.ChangeLogParseException: java.io.IOException: Found 2 files that match classpath:schema/*.sql

Пожалуйста, предложите способ включить все журналы изменений здесь.

1 Ответ

1 голос
/ 24 мая 2019

Одно из возможных решений: вы можете создать основной журнал изменений, который будет включать других журналов изменений столько, сколько вы пожелаете. А в объекте SpringLiquibase вы можете установить только один основной журнал изменений ликвидазы.

Например, предположим, что у вас есть 2 файла журнала изменений: one-changelog.xml и two-changelog.xml, и вам нужно запустить оба. Я предлагаю вам создать еще один файл main-changelog.xml и включить в него one-changelog.xml и two-changelog.xml такие файлы:

<?xml version="1.0" encoding="UTF-8"?>

<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">

    <include file="one.xml"/>
    <include file="two.xml"/>
</databaseChangeLog>

И установить main-changelog.xml файл в качестве журнала изменений для SpringLiquibase.

В результате у вас будет 2 отдельных файла журнала изменений.

...