Я немного нового для Liquibase. Я наткнулся на сценарий, в котором в одном changeSet
он пытается добавить значение по умолчанию, а не нулевое ограничение рядом с ним.Liquibase добавляет значение по умолчанию, а не нулевое ограничение
Но проблема здесь <addDefaultValue/>
и <addNotNullConstraint/>
теги имеют атрибуты значения по умолчанию, поэтому в итоге я получаю исключение.
Ниже changeSet
, что у меня есть,
<changeSet id="f3047816-2d48-4341-a4ce-deface083cea" author="MineStar" failOnError="true">
<preConditions onFailMessage="Ignored AlterColumn for REHANDLE of table LOCATION as column does not exist or already has a NOT NULL constraint." onFail="MARK_RAN">
<columnExists tableName="LOCATION" columnName="REHANDLE"/>
<ext:columnIsNullable tableName="LOCATION" columnName="REHANDLE"/>
</preConditions>
<comment>AHS-1373: AlterColumn LOCATION.REHANDLE - nullability changed from true to false - defaultValue changed from 'null' to '0'</comment>
<addDefaultValue columnName="REHANDLE" columnDataType="BOOLEAN" defaultValueNumeric="0" tableName="LOCATION"/>
<addNotNullConstraint columnName="REHANDLE" defaultNullValue="0" columnDataType="BOOLEAN" tableName="LOCATION"/>
</changeSet>
Вот еще одна странная вещь, которую я мог бы видеть, если я изменить порядок добавления значения по умолчанию, а не нулевые сдерживающие теги не получит каких-либо исключений, что сначала добавляет не нулевое ограничение, а затем значение по умолчанию, как показано ниже. Но я не должен этого делать, поскольку он влияет на контрольную сумму в базе данных, все, что я могу сделать, это добавить новый changeSet
для устранения исключения.
<addNotNullConstraint columnName="REHANDLE" defaultNullValue="0" columnDataType="BOOLEAN" tableName="LOCATION"/>
<addDefaultValue columnName="REHANDLE" columnDataType="BOOLEAN" defaultValueNumeric="0" tableName="LOCATION"/>.
Почему вы не просто удаляете 'defaultNullValue =" 0 "' из тега 'addNotNullConstraint' (или полностью удаляете' addDefaultValue')? –
Нет, я просто не могу редактировать существующее changeSet, так как это влияет на изменение контрольной суммы набора изменений и означает, что у любого, кто уже запускает старый набор изменений, будет проблема с этим. поэтому все, что я могу сделать, это создать новый changeSet для решения этой проблемы, а также сделать существующий один. – Jai
Eventough Если я удалю defaultNullValue = "0" из тега addNotNullConstraint, он все равно бросает исключение. – Jai