使用docker进行部署时如何在liquibase中回滚

问题描述 投票:0回答:1

我开始在我们的springboot项目中使用liquibase。使用Gitlab CI,我们正在创建Image并部署它。一切都很好。但我坚持回滚。

我已经浏览了liquibase回滚文档https://www.liquibase.org/documentation/rollback.html

但我可以使用cmd或maven插件执行。但在我的情况下,问题是所有东西打包在图像和部署。他们不是我可以运行这些命令的系统。那么我该如何执行回滚呢。提前致谢。

尝试:从命令行运行回滚命令将无法工作,我想因为我的数据库是在aws。我通过图像文件访问该rds,该文件是从Gitlab CI构建的

liquibase
1个回答
0
投票

尝试以下:

java -cp /path-to-your/spring-boot-fat.jar \ -Dloader.system=true \ -Dloader.main=liquibase.integration.commandline.Main \ org.springframework.boot.loader.PropertiesLauncher \ --changeLogFile=db/changelog/db-changelog-master.xml \ --driver=org.h2.Driver \ --username=sa \ --url="jdbc:h2:~/test;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE" \ --password=sa \ updateSQL

当然,更改数据库的属性并在类路径上正确指定更改日志的路径。

更新:

这可以帮助您以编程方式执行此操作:

void testRollback(final Connection connection) throws LiquibaseException {
    final Liquibase liquibase = new Liquibase(
            "/path-to/your/changelog.xml",
            new CompositeResourceAccessor(new ClassLoaderResourceAccessor(), new FileSystemResourceAccessor()),
            new JdbcConnection(connection));

    final String contexts = "dev,test";
    liquibase.rollback(10, contexts);
}
© www.soinside.com 2019 - 2024. All rights reserved.