Как получить дельту журналов изменений в Liquibase

Мое требование состоит в том, чтобы заставить Liquibase генерировать только обновленные changeSets из БД по сравнению с предыдущими chnageSets.

Допустим, у меня есть две таблицы t1 и t2 в моем postgresql, поэтому в моем changeLog присутствуют два changeSet. Ниже для понимания:

<changelog>
    <changeSet> t1 </changeSet>
    <changeSet> t2 </changeSet>
</changelog>

Теперь, когда я создам еще одну таблицу t3, changeLog будет выглядеть следующим образом:

<changelog>
    <changeSet> t1 </changeSet>
    <changeSet> t2 </changeSet>
    <changeSet> t3 </changeSet> 
</changelog>

Вместо этого я хочу, чтобы liquibase генерировала вещь, похожую на приведенную ниже, которая является обновленным изменением:

<changelog>
    <changeSet> t3 </changeSet> 
</changelog>

Так что было бы удобно рассылать обновленные изменения по БД.


person RajeeV VenkaT    schedule 26.05.2020    source источник
comment
Если наборы изменений t1 и t2 уже применены, они не будут запускаться снова (по умолчанию). Таким образом, фактически будет применяться только t3.   -  person zerocool18    schedule 27.05.2020
comment
Раджив, я видел этот вопрос на нашем старом форуме Liquibase, но пропустил миграцию. Если у вас есть дополнительные вопросы, попробуйте новый forum.liquibase.org или у Liquibase есть чат-форумы на дискорде как хорошо: discord.gg/RDuuVP   -  person ronak    schedule 02.06.2020


Ответы (2)


дух liquibase заключается в управлении схемой db. Инструмент changeLogGenerate полезен для запуска проекта, но он не предназначен для создания разницы между версиями.

Liquibase должен быть источником, а не следствием.

Эрик

person Eric    schedule 27.05.2020

  1. Создайте новую базу данных в PostgreSQL и, если соответствующая схема, если она не является частью вашего changeLogFile
  2. Update новая база данных с вашим исходным журналом изменений (та, что с t1 и t2)
  3. Теперь вы можете использовать команду diffChangeLog, указывающую --referenceUrl на новую созданную базу данных и --changeLogFile в ваш измененный журнал изменений (тот, что с t1, t2 и t3). Это создаст changeLog с разницей, которая в вашем случае должна быть t3. При необходимости вы можете указать вывод через --outputFile
person sudo    schedule 27.05.2020