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

如果标记应用于runOnChange变更集,则回滚到不工作的标记

易炳
2023-03-14

版本1.0.0
我有一个包含创建表的脚本r-1.0.0.sql和一个创建存储过程的脚本proc.sql。proc变更集被标记为runonchange=true。
我对这些变更很满意,并且我用标记1.0.0标记数据库
最后DATABASECHANGELOG表显示:
1-r-1.0.0.sql-executed
2-proc.sql-executed-(tag)1.1.0

版本2.0.0
我有一个重命名列的脚本r-2.0.0,我还用新的列名更新了proc.sql。运行此操作后,DATABASECHANGELOG为:
1-r-1.0.0.sql-executed
4-proc.sql-reran-(tag)1.0.0
3-r-2.0.0.sql-executed

您注意到重新运行的proc脚本有一个新的编号,但它仍然保留1.0.0标记

如果现在我想回滚到标签1.0.0,那么rollback命令什么也不做,因为标签1.0.0对应于日志中最近的更改。

这似乎是有意为之。有没有一种不同的方法来组织我的更改,以使这个工作?

共有1个答案

符学
2023-03-14

我找到了一个基于我上面链接的文章的解决方案。由于环境的限制,我没有一种简单的方法来传递Java环境变量。我最后安装了一个自定义批处理文件(我将其命名为LiquiBase-sp.bat),内容如下:

@echo off

IF NOT DEFINED JAVA_OPTS set JAVA_OPTS=
set JAVA_OPTS=-Dliquibase.databaseChangeLogTableName=STOREDPROCCHANGELOG %JAVA_OPTS%

liquibase %*

它在Liquibase批处理文件使用的变量中设置参数,然后通过整个命令行调用批处理文件。
在部署期间,我通过调用“Liquibase”应用架构更改,然后通过调用“LiquiBase-sp”应用存储的过程更改。模式更改记录在默认的DATABASECHANGELOG表中,而过程更改记录在单独的STOREDPROCCHANGELOG表中。所有的标记都是通过调用“LiquiBase”完成的,因此它使用默认表,并且只有模式更改才会使用版本标记。

回滚在我提到的场景中工作。

 类似资料:
  • LiquiBase:CVC-complex-type.2.4.A:发现以元素'sql'开始的无效内容。应使用“{”http://www.liquibase.org/xml/ns/dbchangelog“:modifysql}”之一。 获取此变更集的错误

  • 因此,我在Django中有我的views.py,它将对象列表呈现给我的html模板。一切正常。现在,这些对象有一些与之关联的对象ID。我将“static/images/”目录中的图像命名为与对象ID相同的名称。 因此,图像1.jpg将对应于对象id=1的对象,2.jpg对象id=2,依此类推。 现在我想在html中加载img标记中的图像,但是img标记的src URL将取决于对象id。 以下是我的

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

  • 我的问题是liquibase没有回滚我的一些变更集,这些变更集是在我试图回滚的变更集上设置标签后执行的。 例如,我创建了两个按正常方式执行的变更集(A和B)。然后,我创建了另一个变更集,它将变更集B的标记设置为Release1。并且这个变更集也按预期工作。但是,我随后执行另外5个变更集,所有变更集都使用回滚命令。而且这些也执行得很好。 现在,这个回滚不应该回滚在执行release1标记之后执行的任

  • 在这里,为了定位复选框,XPath编写如下//td[text()=“bbbb vvvvvvvv”]/前面的同级::td/div/input[@class='hidden'] 但是这个输入没有被捕获。util"//td[text()='bbbb vvvvvvvvv']/前一个兄弟::td/div/",元素位于。有任何原因吗?。我想知道为什么这个XPath不工作?

  • 我正在使用LiquiBase3.4.2(通过Maven插件)。我有一个db.changelog-master.xml文件,其中包含另外两个文件:db.changelog-2.6.xml和db.changelog-2.10。 db.changelog-master.xml看起来如下所示: 在db.changelog-2.10中,我创建了一个来删除一些数据,在标记中,我引用了创建相同数据的。这两个看起