首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成液化基的可能性:diff和回滚

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

Stack Overflow用户
提问于 2019-08-06 06:26:43
回答 1查看 451关注 0票数 1

Java EntityFramework(EF)是Java世界中类似的。和liquibase:diff = Add-Migration in EF.但问题是liquibase:diff只生成changelog,而没有回滚。是否可以在回滚的同时生成diff。

我尝试用liquibase:rollback创建回滚脚本。但是,在所有情况下,它都不能生成回滚脚本,例如,当我删除了一个具有更改集的列,然后希望回滚时。设置或运行错误

代码语言:javascript
复制
Liquibase: liquibase.exception.RollbackImpossibleException: No inverse to liquibase.change.core.DropColumnChange created -> [Help 1]
EN

回答 1

Stack Overflow用户

发布于 2019-08-09 03:45:10

Liquibase的作者Nathan几乎回答了你的问题:http://www.liquibase.org/2007/06/the-problem-with-database-diffs.html

简而言之,diff生成的一些更改本身是有问题的,直到有资格的开发人员对这些更改的目的进行审查。回滚甚至更复杂,因此在大多数情况下留给开发人员。

正如Jens在对您的问题的评论中提到的,您生成的一些更改可以自动回滚(相对安全)。然而,其他人则不会那么好地发挥作用。

如果有没有自动回滚方式的变更集,则需要在变更集中编写自己的回滚。例如,如果您删除一个列--更改集中本身没有足够的信息来重新创建列和所有数据。反转脚本看起来可能类似于"ALTER;UPDATE SET A=;“

虽然考虑到源系统和目标系统的知识,luquibase:diff可能会创建“更多”回滚(例如,从“旧版本”获取列数据类型,同时编写"DROP列“更改集并注入自定义的”回滚“部分),但它最终会创建一种错误的安全性,使其达到不希望的程度。

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

https://stackoverflow.com/questions/57370063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档