当我尝试在MSSQL和MySQL上运行Liquibase校验和时,我遇到了问题。
在我的基于MSSQL的数据库中,我有一个带有此校验和的changelog条目:
3:cf2f5de7a1dcc738bbc185e25fbcf6c9
当我对该数据库运行liquibase时,它工作正常。
然后,我将changelog条目复制到我的MySQL数据库中并尝试运行,并得到此错误:
myLiquibase.xml::1::Tobb is now: 3:cedf7a8ba54ea3f83141f79
我尝试null在MSSQL中将校验和设置为以重新生成校验和,然后校验和恢复为
null
在MySQL中执行相同操作时,我得到以下校验和:
3:cedf7a8ba54ea3f83141f7987007deb7
因此,据我所见,根据它是在MSSQL还是MySQL中运行,Liquibase会生成不同的校验和。怎么会这样 我以为校验和仅取决于liquibase脚本的实际内容?
是的,它取决于内容和 数据库类型 ,因为实际上校验和并不取决于您的changeset文本,而是取决于为当前数据库生成的 sql ,这对于不同的DB会稍有不同。
changeset
如果要避免校验和错误,可以validCheckSum在变更集中使用标记。
validCheckSum