Выполнение пользовательского сценария первого выпадающего с Liquibase - PullRequest
2 голосов
/ 06 апреля 2020

Мы хотим удалить все содержимое схемы и воссоздать объекты схемы из журнала изменений Liquibase в one наших автоматизированных сред тестирования. Поскольку мы используем Oracle с разделением по ссылке, мы сталкиваемся с . Liquibase dropAll завершается ошибкой, когда есть справочные многораздельные таблицы , но, несмотря на это, мы не сможем полагаться на Liquibase dropAll, потому что мы будем использование других Oracle -specifi c объектов.

Мы попытались использовать такой набор изменений (первый среди наборов изменений):

<changeSet author="foo" id="drop-schema" context="drop-first" runAlways="true">
  <validCheckSum>ANY</validCheckSum>
  <sqlFile path="classpath:/db/drop-schema.sql" splitStatements="true" stripComments="true" endDelimiter="/"/>
</changeSet>

... со скриптом он также очищает таблицу DATABASECHANGELOG, но он работает только каждый второй раз, поскольку выполнение фактически является частью набора изменений и выполняется не перед миграцией, а во время.

Мы не хотим прибегать к решению написания Расширение Liquibase, как предложено в Liquibase отбрасывает все функции - postgresql.

Как мы можем запустить наш скрипт перед миграцией Liquibase в одной из наших сред в рамках запуска весенней загрузки? Вместо этого мы обращаемся к Flyway, который имеет встроенную поддержку Обратных вызовов , где beforeMigrate выглядит так, как нам нужно ...

...