当前位置: 首页 > 知识库问答 >
问题:

Liquibase用于多变更集的单一前提条件

胡嘉歆
2023-03-14

我有许多变更集,如果存在特定条件,我想要运行这些变更集。例如,仅当sqlCheck以例外结果执行时,才运行变更集1、2和3。

我可以将前置条件复制到每个变更集中。然而,它感觉应该有一个更有效的方法来做这件事。随着变更集数量的增长,文件中有很多重复项。

感谢任何帮助。

共有1个答案

彭鸿畅
2023-03-14

不幸的是,这是不可能的,但有时您可以避免在声明property标记时使用前置条件。例如,对于不同的数据库(如Oracle和SQL Server)具有不同的数据类型(如Oracle中的number,SQL Server中的float)时,可以使用property标记代替对每个数据库使用前置条件:

<property dbms="oracle" name="DECIMALTYPE" value="NUMBER" />
<property dbms="mssql" name="DECIMALTYPE" value="FLOAT" />
 类似资料:
  • 这方面有什么最佳做法吗?我们不能在LiquiBase中手动设置事务吗?

  • 我已经用Spring试用过LiquiBase3.0测试版了(顺便说一句,它不适合2.0)。很顺利。 现在,我正在用Ant和相同的数据库和changelog测试它,在回滚所有更改并删除表DATABASECHANGELOG和DatabaseChangeloglock之后。 问题是liquibase将所有更改集记录在表DATABASECHANGELOG中,这意味着我的配置中没有任何错误,但它没有将更改提

  • 我想在changelog文件中使用以下变更集标记数据库,以便将来回滚。当我应用这个变更集时,我在databasechangelog中注意到,前面的变更集也用标记更新了。 changelog文件中的变更集 下面是从databasechangelog表中提取的内容,function51是上一次运行的变更集 有人遇到过吗?我使用的是Liquibase 3.1.1 多谢了。

  • 我们使用liquibase对数据库进行源代码控制。最初,我们从Postgres开始,创建了数据类型为特定于Postgres的列的变更集。 例如,我们有一个变更集,它创建了具有“JSON”类型字段的表。现在,我们想转移到其他数据库。因此,当我们针对另一个数据库运行变更集时,它无法创建表。我尝试添加“failOnError=false”。但是,后面的变更集失败,因为该表不存在。 您能建议如何重构旧的变

  • 我在酗酒方面遇到了麻烦。出于某种原因(我没有更改任何现有的变更集或其他东西),它试图应用已经在base中的变更集。所以我得到了一些错误,比如“关系”表“已经存在”。 我找到了这个标签-

  • 我正在试用Liquibase,目的是尝试自动化数据库部署,并获得数据库更改的一些结构。 这里是我想评估自动回滚的变更集。现在,我试图在中引入一个错误,并希望在错误发生后运行,它还会从表中删除列。 http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd“> 但是真正发生的是表中没有条目。但表中的列仍然存在。我确实查看了liqui