我开始在我们的springboot项目中使用liquibase。使用Gitlab CI,我们正在创建Image并部署它。一切都很好。但我坚持回滚。
我已经浏览了liquibase回滚文档https://www.liquibase.org/documentation/rollback.html
但我可以使用cmd或maven插件执行。但在我的情况下,问题是所有东西打包在图像和部署。他们不是我可以运行这些命令的系统。那么我该如何执行回滚呢。提前致谢。
尝试:从命令行运行回滚命令将无法工作,我想因为我的数据库是在aws。我通过图像文件访问该rds,该文件是从Gitlab CI构建的
尝试以下:
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);
}