可以应用Liquibase变更集

时间:2014-05-21 11:06:08

标签: mysql innodb liquibase

如果我使用带有utf-8和InnoDB的mysql数据库,但liquibase会导致错误,因为表的行大小太大。 我有一个已发布的变更集,它会导致错误,因为它超出了行的大小。

<changeSet author="author" id="id">
    <addColumn tableName="TABLE">
        <column name="COLUMN" type="VARCHAR(5000)" />   <!-- Row size is too long -->
    </addColumn>
</changeSet>

行大小问题的解决方案是更改&#34; VARCHAR(5000)&#34;进入&#34; TEXT&#34;,但问题是这个变更集已在某些系统上执行,所以我不能在这里更改它。

是否有任何解决方案告诉liquibase如果尚未执行,它应该替换另一个变更集?

1 个答案:

答案 0 :(得分:2)

确定找到了解决方案。可以使用validCheckSum告诉Liquibase此变更集已被修改。

我刚刚修改了变更集,并添加了这样的标记。

<changeSet author="author" id="id"> 
    <validCheckSum>oldChecksum</validCheckSum>
    <validCheckSum>newChecksum</validCheckSum>  
    <addColumn tableName="TABLE">
        <column name="COLUMN" type="TEXT" />
    </addColumn>
</changeSet>

之后,liquibase接受了更改集的执行,因此可以创建一个修改列的新变更集。

<changeSet author="author" id="anotherId">
    <modifyDataType tableName="TABLE" columnName="COLUMN" newDataType="TEXT" />
</changeSet>