После обновления базы данных возникает ошибка проверки контрольной суммы liquibase - PullRequest
1 голос
/ 30 марта 2020

Я обновляю свой PostgreSQL с версии 9.6 до 12 и использую Liquibase 3.8.0 через Spring.

После обновления базы данных при запуске моего приложения я получил следующее исключение Liquibase для первый набор изменений:

Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
     1 change sets check sum
          db.liq.xml::1555784288321-4::myuser was: 8:9df75f119833ded8765efcc910ffa071 but is now: 8:57040acff0d316c100c788531a84ae8b

Теперь текущий набор изменений установлен с тегом onValidationFail="MARK_RAN", поэтому он не должен давать сбой, но все же я получаю это исключение ..

 <changeSet author="myuser" id="1555784288321-4" onValidationFail="MARK_RAN">

I Я могу решить эту исключительную ситуацию c, установив тег <validCheckSum>, но я думаю, что я получу то же исключение для других наборов изменений. Единственное, что я сделал, - это обновил базу данных Postgres.

Теперь, использует ли liquibase функцию базы данных ha sh? Если да, то это может объяснить это поведение, но маловероятно, что иначе после каждого серьезного обновления или каждый раз, когда БД будет обновлять свою функцию ha sh, Liquibase будет вести себя так.

1 Ответ

1 голос
/ 30 марта 2020

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

Для запуска clearCheckSums вы можете использовать цель maven:

https://www.liquibase.org/documentation/maven/maven_clearchecksums.html

или командная строка Liquibase:

https://www.liquibase.org/documentation/command_line.html

Другой вариант (плохой):

вы можете добавьте <validCheckSum>ANY</validCheckSum> в набор изменений.

Это решит проблему, но вы потеряете контроль над изменениями внутри уже выполненных наборов изменений. Так что НЕ хорошая вещь.

...