Мы используем Liquibase в качестве инструмента рефакторинга базы данных в облачном сервисе и теперь хотели бы использовать его для некоторой облегченной миграции данных, которая будет реализована как CustomTaskChange и займет всего несколько секунд.Эту миграцию данных «приятно иметь», но она ни в коем случае не обязательна для правильной работы службы - если по какой-то причине происходит сбой, набор изменений следует просто пропустить, служба, тем не менее, запущена, и набор изменений повторяется во времяследующий перезапуск сервиса, пока он, наконец, не получится.Таким образом, ошибки при выполнении набора изменений следует игнорировать, но набор, помеченный как запущенный, только после того, как он действительно был успешно выполнен один раз.
Интересно, как мы могли бы реализовать такой тип поведения, используя Liquibase: атрибут <changeSet>
failOnError="false"
продолжается в случае ошибки, но согласно документации и ответу , предоставленному Натаном Воксландом здесь в StackOverflow, он всегда помечает набор изменений как запущенный - следовательно, Liquibase не будет пытаться выполнить его при следующем запускеслужбы.Атрибут <preConditions>
onFail
, по-видимому, касается только невыполнения предварительных условий, поэтому запуск все равно завершится неудачей в случае ошибки при установке onFail
, скажем, CONTINUE
.
Есть ли какая-либо другая опция?/ атрибут, который мы пропустили или рекомендуемый способ решения такой ситуации?