Как изменить порядок выполнения скрипта sql по умолчанию в liquibase? - PullRequest
1 голос
/ 17 февраля 2020

Я пытаюсь запустить кучу sql скриптов в Liquibase. Но, по умолчанию, liquibase выполняет все сценарии в порядке их размещения в каталоге. Есть ли способ, с помощью которого я могу изменить выполнение этих сценариев по умолчанию, т.е. сначала выполнить сценарий создания таблицы, а затем весь сценарий вставки.

Мой основной файл журнала изменений:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
    <includeAll path="../migration/" relativeToChangelogFile="true"/>
</databaseChangeLog>

Я помещаю весь сценарий sql в папку миграции.

1 Ответ

2 голосов
/ 17 февраля 2020

Вы не можете изменить порядок выполнения. Единственное, что вы можете сделать, это изменить порядок файлов в каталоге /migration, переименовав их.

Насколько я знаю, Liquibase сортирует файлы в алфавитном порядке.

И внутри файлы Liquibase выполняет наборы изменений один за другим сверху вниз.

ИЛИ

Вы можете использовать <include> вместо <includeAll>. Таким образом, вы сможете включать файлы changeLog в нужном вам порядке.

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
    <include file="../migration/changeLog_3.xml" relativeToChangelogFile="true"/>
    <include file="../migration/changeLog_1.xml" relativeToChangelogFile="true"/>
    <include file="../migration/changeLog_2.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>
...