Динамическая конфигурация заполнителя в динамических контрольных суммах, генерируемых ликвидазой - PullRequest
2 голосов
/ 04 ноября 2019

Я использую Spring, liquibase с базой данных hsql. Я создаю последовательность для таблицы, скажем, пример таблицы. Последовательность будет создана из liquibase, как показано ниже:

<changeSet id="xx" author="yy" dbms="hsql">
<preConditions onFail="MARK_RAN">
<not>
<sequenceExists sequenceName="example_id_sequence"/>
</not>
</preConditions>
<createSequence sequenceName="example_id_sequence" startValue="${hsql.exampleSequenceCount}" incrementBy="1"/>
</changeSet> 

Как вы заметили здесь, startValue для последовательности получено из внешнего кода Java с использованием параметров журнала изменений bean-компонента liquibase.

Первый запуск работает нормально. После вставки некоторых данных в таблицу примера, при перезапуске startValue теперь будет иметь значение max Id + 1 для таблицы, оно возвращается так же для требования.

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

Если присутствует последовательность, не проверяйте контрольную сумму и не создавайте новую последовательность

1 Ответ

1 голос
/ 05 ноября 2019

В качестве обходного пути попробуйте добавить:

<validCheckSum>your-check-sum</validCheckSum>

или:

<validCheckSum>ANY</validCheckSum>

Должен быть установлен checkSum для этого измененияSet константа (или не несущественный в случае ANY), поэтому этот набор изменений будет выполнен только один раз.

...