首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >回滚不适用于液化基更改集。

回滚不适用于液化基更改集。
EN

Stack Overflow用户
提问于 2020-04-09 20:56:16
回答 1查看 4.4K关注 0票数 0

我使用这些脚本进行回滚测试。但是我的数据库没有发生什么事,回滚不起作用。还能插进去。请帮帮我!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<changeSet author="me" id="123123">
    <sql>
        INSERT INTO employee (id, name) VALUES ('adad', 'test')
    </sql>
    <rollback/>
</changeSet>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-14 21:23:48

当您使用清算脚本时,理解回滚的概念是很重要的,因为这可能会被滥用。

液基移动的范畴

Liquibase操作有两类,产生了不同一代的rollback语句:

自动,迁移可以决定性地生成回滚手册所需的步骤,其中我们需要发出回滚命令,因为迁移指令无法确定地标识语句--例如,“create table”语句的回滚将是“drop”创建的表。毫无疑问,这是可以确定的,因此rollback语句可以自动生成。

另一方面,无法确定“drop table”命令的rollback语句。无法确定表的最后状态,因此无法自动生成rollback语句。这些类型的迁移语句需要手动回滚说明。

以下是上述语句的一个示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<changeSet id="testRollback" author="stackoverflow">
    <createTable tableName="stackoverflow_turorial">
        <column name="id" type="int"/>
        <column name="heading" type="varchar(36)"/>
        <column name="author" type="varchar(36)"/>
    </createTable>
    <rollback>
        <dropTable tableName="stackoverflow_test"/>
    </rollback>
</changeSet>

因此,在您的情况下,回滚不能保持为空,应该得到一些声明。

让我们更正您的代码.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <changeSet author="me" id="123123">
        <sql>INSERT INTO EMPLOYEE (id, name) VALUES ('adad', 'test')</sql>
        <rollback>DELETE FROM EMPLOYEE WHERE ID = 'adad'</rollback>   
    </changeSet>

我们可以使用以下命令运行迁移:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn liquibase:update

执行之后,我们可以使用以下方法回滚操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn liquibase:rollback

这将执行变更集的回滚段,并应恢复在更新阶段完成的任务。但是如果我们只发出这个命令,构建就会失败。

原因是--我们没有指定回滚的限制;数据库将通过回滚到初始阶段而完全删除。因此,在满足条件时,必须定义以下三个约束中的一个来限制回滚操作:

  • rollbackCount

  • rollbackDate
  1. rollbackTag rollbackTag

回到Tag的

我们可以将数据库的特定状态定义为标记。因此,我们可以回到那个状态。回滚到标签名“1.0”如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn liquibase:rollback -Dliquibase.rollbackTag=1.0

这将执行标记“1.0”之后执行的所有变更集的rollback语句。

按计数滚回

在这里,我们定义了需要回滚的变更集。如果我们将其定义为1,则最后一个变更集执行将回滚:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn liquibase:rollback -Dliquibase.rollbackCount=1

滚回原来的

我们可以将回滚目标设置为日期,因此,在该日之后执行的任何更改集都将回滚:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn liquibase:rollback "-Dliquibase.rollbackDate=Jun 03, 2017"

日期格式必须是ISO数据格式,或者应该与执行平台的DateFormat.getDateInstance()值相匹配。

此外,您还可以在不同的sql文件中提到sql,并在这里提供引用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61134257

复制
相关文章
spring @Transactional注解用于事务回滚案例
这里基于小编的这篇博文的spring配置和实体类,service类为基础,解释@Transactional注解:
全栈程序员站长
2022/08/09
6210
oracle存储过程回滚_sql事务回滚
( No INT, Name nvarchar(10), Comment nvarchar(10)
全栈程序员站长
2022/11/01
2.2K0
spring事务回滚机制_事务回滚失败
使用 @Transaction 来配置自动回滚,可以配置在类上,也可以配置在方法上(作用域不同),但对final或private修饰的方法无效,且该类必须是受spring所管控的。
全栈程序员站长
2022/11/01
2.1K0
嵌套事务回滚策略_内部事务回滚会导致外部事务回滚
1.外部起事务,内部起事务,内外都有Try Catch 内部出错:如果内部事务出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。 外部出错:如果外部事物出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。 注:如果内部的事务不起事务名称,内部如果出错,将会回滚掉会话中的全部事务,而且报异常。
全栈程序员站长
2022/11/10
3K0
git 回滚
可以看到你最近本地的操作,找到你最近提交的commit,如图,我最近提交的是fcafa20 记录。
CatEatFish
2020/07/09
1.8K0
git 回滚
java 配置事务回滚_Spring@Transactional事务回滚
Spring中事务分为编程时事务和声明式事务,编程式事务:编程人员通过代码控制事务的开启、回滚、提交,声明式事务:把事务的处理交给spring。使用注解@transactional配置就是声明式事务。
全栈程序员站长
2022/11/01
2.4K0
回滚段undo
可见rollback操作和当前数据库 归档模式并没有关系,只和commit操作有关,一旦commit就无法回滚。
职场亮哥
2020/10/10
1.8K0
回滚段undo
Deployment回滚(一)
Kubernetes的Deployment可以轻松地进行滚动更新,但是如果出现了问题,可能需要回滚到之前的版本。Deployment提供了回滚功能,可以让我们轻松地回滚到之前的版本。
玖叁叁
2023/04/29
1.6K0
Deployment回滚(二)
如果我们想要回滚到之前的某个版本,我们可以使用以下命令查看Deployment的更新历史记录:
玖叁叁
2023/04/29
1.4K0
git回滚代码
有时我们需要回滚git上已经提交的代码,特别是已经提交到github上的代码。可以使用如下步骤:
drunkdream
2020/01/02
1.6K0
git回滚代码
有时我们需要回滚git上已经提交的代码,特别是已经提交到github上的代码。可以使用如下步骤: 1、 git reflog $ git reflog 1bd6100 (HEAD -> master) HEAD@{0}: commit: Site updated: 2018-05-10 12:20:40 f681615 HEAD@{1}: commit: Site updated: 2018-04-25 19:31:25 78f096f HEAD@{2}: commit: Site updated: 201
drunkdream
2018/07/06
1K0
git回滚方式
本文所说的回滚,均是从版本库中找回之前的版本。文件未提交时的回滚比较简单,不包括在内。
跑马溜溜的球
2020/12/07
1.5K0
git回滚方式
Git 代码回滚
sourceTree 中 revert 译为提交回滚,作用为忽略你指定的版本,然后提交一个新的版本。新的版本中已近删除了你所指定的版本。
零式的天空
2022/03/23
1.2K0
git commit回滚
从svn 迁移到 git,已经有很长时间。git 的基本命令已经可以说是熟练的掌握,能够满足日常的开发。想了解常用git命令可以查看: 常用git命令
艳龙
2021/12/16
8.9K0
sql数据库回滚操作_sql回滚语句 rollback
go BEGIN TRY — SQL Server 需要显示的定义 开始一个事务. BEGIN TRANSACTION; — 插入2条同样的数据,使主键重复,引发错误后回滚事务. INSERT INTO testtable(id, name) VALUES (4, ‘FOUR’); INSERT INTO testtable(id, name) VALUES (4, ‘FOUR’); — 执行成功后,需要提交事务. COMMIT; END TRY BEGIN CATCH PRINT(‘Main.错误代码 = ‘ + STR(ERROR_NUMBER())); PRINT(‘Main.错误严重级别 = ‘ + STR(ERROR_SEVERITY())); PRINT(‘Main.错误状态代码 = ‘ + STR(ERROR_STATE())); PRINT(‘Main.错误信息 = ‘ + ERROR_MESSAGE()); — 回滚事务 ROLLBACK; END CATCH
全栈程序员站长
2022/09/27
3.9K0
回滚/重置git merge
回滚失败 no -m option was given,这是因为merge是把两个分支合并到一起,回滚的话,就必须告诉git需要回滚到哪个个分支
十毛
2021/06/11
2.9K0
[MySQL]mysql binlog回滚数据
log-bin = /var/log/mysql/mysql_bin #binlog日志文件,以mysql_bin开头,六个数字结尾的文件:mysql_bin.000001,并且会将文件存储在相应的xxx/xxx路径下,如果只配置mysql_bin的话默认在C:\ProgramData\MySQL\MySQL Server 5.7\Data下; binlog_format = ROW #binlog日志格式,默认为STATEMENT:每一条SQL语句都会被记录;ROW:仅记录哪条数据被修改并且修改成什么样子,是binlog开启并且能恢复数据的关键; expire_logs_days= 10 #binlog过期清理时间; max_binlog_size = 100m #binlog每个日志文件大小; binlog_cache_size = 4m #binlog缓存大小; max_binlog_cache_size = 512m #最大binlog缓存大小。 service mysql restart #重启一下
唯一Chat
2020/02/18
5.9K0
[MySQL]mysql binlog回滚数据
Git撤销&回滚操作
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
2.2K0
Oracle怎么回滚数据
注意时间是Oracle的时间,先查下Oracle的系统时间 执行sql一定要加限制条件········和分号 》》 ; 《《 差点酿下大错
向着百万年薪努力的小赵
2022/11/20
8540
点击加载更多

相似问题

液化基-如何回滚使用序列填充id字段的插入更改集

12

如何在液化库中标记更改集以回滚

21

如何使用液化基API生成回滚标记

10

在部署错误期间触发液化基回滚

12

生成液化基的可能性:diff和回滚

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文