Мы хотим удалить все содержимое схемы и воссоздать объекты схемы из журнала изменений 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
выглядит так, как нам нужно ...