首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Docker进行部署时如何在Liquibase中回滚

问使用Docker进行部署时如何在Liquibase中回滚
EN

Stack Overflow用户
提问于 2018-08-29 14:12:07
回答 1查看 844关注 0票数 0

我开始在我们的Spring Boot项目中使用Liquibase。使用Gitlab CI,我们正在创建并部署映像。一切都很正常。但是我被困在回滚中了。

我已经通过了Liquibase rollback documentation,但我可以使用cmd或maven插件执行。但在我的案例中,问题是所有的东西都打包在映像中并进行部署。我不能在他们的系统上运行这些命令。那么如何执行回滚呢?

我试着从命令行运行回滚命令,我想它不会工作,因为我的数据库在AWS中。我正在通过从Gitlab CI构建的镜像文件访问RDS。

EN

回答 1

Stack Overflow用户

发布于 2018-08-29 22:03:18

尝试以下操作:

代码语言:javascript
复制
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

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

更新

这可以帮助您以编程方式完成此操作:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52070563

复制
相关文章

相似问题

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