如何使用Liquibase将数据库回滚到原始版本?

时间:2018-05-08 08:20:20

标签: oracle maven liquibase

我有一个现有的数据库(版本x),我可以使用下面的命令

生成ChangeLog文件
mvn liquibase:generateChangeLog -Dliquibase.outputChangeLogFile=d:\output.xml

之后,我尝试直接删除数据库中的一个表,如何使用Liquibase将我的数据库回滚到版本x?

1 个答案:

答案 0 :(得分:0)

一旦开始使用Liquibase,您应该避免直接对数据库进行更改。

让我们简化场景,以便更容易描述。比如版本x,您的数据库有一个名为TABLE1的表,没有别的。您运行generateChangeLog命令,并获得一个更改日志,其中包含一个名为“create table TABLE1”的变更集。当Liquibase创建变更集时,它会给它一个id。创建更改日志后,您将希望通过运行liquibase changelogSync命令在该数据库中记录数据库和更改日志是“同步” - 这将创建第二个名为DATABASECHANGELOG的表并添加一行使用变更集的id和其他一些信息到该表。

如果您然后手动删除该表,Liquibase不会“知道”您已完成此操作,因此您还需要手动让liquibase知道您已执行该删除操作。您可以通过从databasechangelog表中删除行来完成此操作。然后,您可以通过运行liquibase update命令重新创建表并返回到版本x。