我有一个现有的数据库(版本x),我可以使用下面的命令
生成ChangeLog文件mvn liquibase:generateChangeLog -Dliquibase.outputChangeLogFile=d:\output.xml
之后,我尝试直接删除数据库中的一个表,如何使用Liquibase将我的数据库回滚到版本x?
答案 0 :(得分:0)
一旦开始使用Liquibase,您应该避免直接对数据库进行更改。
让我们简化场景,以便更容易描述。比如版本x,您的数据库有一个名为TABLE1
的表,没有别的。您运行generateChangeLog
命令,并获得一个更改日志,其中包含一个名为“create table TABLE1”的变更集。当Liquibase创建变更集时,它会给它一个id。创建更改日志后,您将希望通过运行liquibase changelogSync
命令在该数据库中记录数据库和更改日志是“同步” - 这将创建第二个名为DATABASECHANGELOG
的表并添加一行使用变更集的id和其他一些信息到该表。
如果您然后手动删除该表,Liquibase不会“知道”您已完成此操作,因此您还需要手动让liquibase知道您已执行该删除操作。您可以通过从databasechangelog表中删除行来完成此操作。然后,您可以通过运行liquibase update
命令重新创建表并返回到版本x。