我开始将liquibase用于我们的springboot项目之一。使用Gitlab CI,我们正在创建映像并进行部署。一切正常。但是我陷入了回滚。
我已经阅读了liquibase回滚文档 https://www.liquibase.org/documentation/rollback.html
但是我可以使用cmd或maven插件执行。但就我而言,问题是所有东西都打包在映像中并部署了。他们不是我可以在其上运行这些命令的系统。那么如何执行回滚。预先感谢。
尝试:由于我的数据库位于aws中,因此我猜想从命令行运行回滚命令将不起作用。而且我正在通过从Gitlab CI构建的图像文件访问rds
答案 0 :(得分: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
当然可以更改数据库的属性,并在classpath上正确指定更改日志的路径。
更新:
这可以帮助您以编程方式进行操作:
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);
}