Liquibase - 校验和因不同的数据库供应商而异

时间:2014-09-19 07:30:36

标签: java mysql sql sql-server liquibase

当我尝试在MSSQL和MySQL上运行它时,我遇到了Liquibase校验和的问题。

在我的MSSQL-base中,我有一个带有此校验和的changelog-entry:

3:cf2f5de7a1dcc738bbc185e25fbcf6c9

当我对这个数据库运行liquibase时,它运行正常。

然后,我将changelog-entry复制到我的MySQL数据库并尝试运行,并收到此错误:

myLiquibase.xml::1::Tobb is now: 3:cedf7a8ba54ea3f83141f79

我已经尝试将校验和设置为MSSQL中的null以重新生成校验和,校验和将恢复为

3:cf2f5de7a1dcc738bbc185e25fbcf6c9

在MySQL中做同样的事情时,我得到了这个校验和:

3:cedf7a8ba54ea3f83141f7987007deb7

因此,从我所看到的,取决于它是在MSSQL还是MySQL中运行,Liquibase会生成不同的校验和。怎么会发生这种情况?我认为校验和仅取决于liquibase脚本的实际内容?

2 个答案:

答案 0 :(得分:3)

是的,这取决于内容和数据库类型,因为实际校验和不取决于您的changeset文本,而是取决于为当前数据库生成的 sql ,对于不同的数据库会略有不同。

如果您想避免校验错误,可以在变更集中使用validCheckSum标记。

答案 1 :(得分:0)

校验和实际上是根据变更集文本的规范化版本计算的,而不是SQL,应该与数据库类型无关。

您是否针对不同的数据库运行不同的操作系统版本?