当我尝试在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脚本的实际内容?
答案 0 :(得分:3)
是的,这取决于内容和数据库类型,因为实际校验和不取决于您的changeset
文本,而是取决于为当前数据库生成的 sql ,对于不同的数据库会略有不同。
如果您想避免校验错误,可以在变更集中使用validCheckSum
标记。
答案 1 :(得分:0)
校验和实际上是根据变更集文本的规范化版本计算的,而不是SQL,应该与数据库类型无关。
您是否针对不同的数据库运行不同的操作系统版本?