Liquibase纯XML变更集:属性替换前后何时计算校验和?
问题解答
你的XML变更集属于属性替换完成后计算校验和的情况,具体说明如下:
你的变更集代码
<changeSet author="[...]" id="[...]"> <addColumn tableName="FOO"> <column name="BAR" type="${type.string.max.80}" /> </addColumn> </changeSet>
官方文档规则(翻译整理)
你可以在
sql和sqlFile变更类型中使用属性替换。注意,Liquibase会在完成属性替换后计算sql变更集的校验和;但对于sqlFile变更集,会在替换外部SQL文件中的属性前计算校验和。
场景匹配分析
文档中明确的sql和sqlFile是两类特殊变更类型,而你使用的是XML结构化变更类型(如addColumn):
- 这类结构化变更的校验和计算逻辑与内嵌
sql变更完全一致:Liquibase会先完成所有属性替换,再基于替换后的完整XML内容生成校验和。 - 仅
sqlFile类型采用“替换前计算校验和”的规则,你的场景不涉及该类型,无需遵循此规则。
内容的提问来源于stack exchange,提问作者Thorsten Schöning
相关产品推荐
相关产品推荐

