小编Jai*_*Jai的帖子

Liquibase添加默认值而不是空约束

我对Liquibase有点陌生。我遇到了一种情况,其中一种changeSet情况是尝试先添加默认值,然后再添加默认值。

但是这里的问题是标签<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>
Run Code Online (Sandbox Code Playgroud)

在这里我能看到的另一件奇怪的事情是,如果我重新排列了添加默认值和非null约束标签的顺序,我不会得到任何先添加非null约束然后再添加默认值的异常,如下所示。但是我不应该这样做,因为它会影响数据库中的校验和,我所能做的就是添加新changeSet的解决异常的方法。

<addNotNullConstraint columnName="REHANDLE" defaultNullValue="0" columnDataType="BOOLEAN" tableName="LOCATION"/>

<addDefaultValue …
Run Code Online (Sandbox Code Playgroud)

liquibase

4
推荐指数
1
解决办法
6951
查看次数

标签 统计

liquibase ×1