我开始在我们的Spring Boot项目中使用Liquibase。使用Gitlab CI,我们正在创建并部署映像。一切都很正常。但是我被困在回滚中了。
我已经通过了Liquibase rollback documentation,但我可以使用cmd或maven插件执行。但在我的案例中,问题是所有的东西都打包在映像中并进行部署。我不能在他们的系统上运行这些命令。那么如何执行回滚呢?
我试着从命令行运行回滚命令,我想它不会工作,因为我的数据库在AWS中。我正在通过从Gitlab CI构建的镜像文件访问RDS。
发布于 2018-08-29 22:03:18
尝试以下操作:
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的路径。
更新
这可以帮助您以编程方式完成此操作:
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);
}https://stackoverflow.com/questions/52070563
复制相似问题