当前位置: 首页 > 面试题库 >

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

祖奇
2023-03-14
问题内容

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

在我的基于MSSQL的数据库中,我有一个带有此校验和的changelog条目:

3:cf2f5de7a1dcc738bbc185e25fbcf6c9

当我对该数据库运行liquibase时,它工作正常。

然后,我将changelog条目复制到我的MySQL数据库中并尝试运行,并得到此错误:

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

我尝试null在MSSQL中将校验和设置为以重新生成校验和,然后校验和恢复为

3:cf2f5de7a1dcc738bbc185e25fbcf6c9

在MySQL中执行相同操作时,我得到以下校验和:

3:cedf7a8ba54ea3f83141f7987007deb7

因此,据我所见,根据它是在MSSQL还是MySQL中运行,Liquibase会生成不同的校验和。怎么会这样
我以为校验和仅取决于liquibase脚本的实际内容?


问题答案:

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

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



 类似资料:
  • liquibase变更集校验和的生成是否考虑了主机名或其他问题? 我有一个问题是我在部署服务器上的特定数据库上运行了liquibase。但是,当我从本地机器(对同一个数据库)重新运行同一组changelogs时,liquibase试图重新执行变更集,因此抛出诸如“Table已经存在”之类的错误,而实际上我希望它检测到它们已经运行并跳到新的变更集。 谢了。

  • 在我目前的项目中,有一个数据库团队在将它们应用到生产环境之前检查所有脚本。 我们使用Liquibase将变更集应用到开发中,但是对于生产,我们需要能够生成一个*。包含所有语句的sql文件。 根据液基-专家-插件的文档,updateSQL应该是我想要的:http://www.liquibase.org/documentation/maven/maven_updatesql.html。 所以我创建了两

  • 每次更改DB结构时,我都使用时间戳创建一个新的迁移文件,以便按顺序执行,在一个干净的数据库中使用migrate命令(使用maven插件或命令行工具),它可以很好地工作,但在一个生产数据库中,使用相同的DB结构但添加了数据,我会得到以下错误:

  • 我们可以给组件的 data 指定校验规则。如果传入的数据不符合规则,那么 san 会抛出异常。当组件给其他人使用时,这很有用。 指定校验规则,需要使用 DataTypes 进行声明: import san, {DataTypes} from 'san'; let MyComponent = san.defineComponent({ dataTypes: { name:

  • 对于我目前的项目,我正在制作一张表格,让我能够跟踪我的D 现在,我可以分别为每个单元格进行适当的数据验证。在我的ref tables表中,我有一个部分,它将获取字符类值,并将所有“subclass”选项放入一行。然后,我可以使用特定单元格中的数据验证来获取子类行。这是可行的,但对每个单元格来说都很乏味。 我想放在范围部分的公式是 它用适当的列追加行号,这样每一行都会自动获得自己的子类行(例如:Re