如果我使用带有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如果尚未执行,它应该替换另一个变更集?
答案 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>