Как выполнить откат в жидкой базе при использовании докера для развертывания - PullRequest
0 голосов
/ 29 августа 2018

Я начал использовать liquibase для одного из наших проектов Springboot. Используя Gitlab CI, мы создаем образ и разворачиваем его. Все работает нормально. Но я застрял при откате.

Я просмотрел документы отката о жидкой основе https://www.liquibase.org/documentation/rollback.html

но я могу выполнить с помощью плагина cmd или maven. Но проблема в моем случае - все это упаковано в образ и развернуто. Это не система, в которой я могу запустить эти команды. Так как я могу выполнить откат. Заранее спасибо.

Пробовал : Запуск команды отката из командной строки не будет работать, я думаю, потому что мой БД находится в aws. И я обращаюсь к этому RDS через файл образа, который был собран из Gitlab CI

1 Ответ

0 голосов
/ 29 августа 2018

попробуйте следующее:

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);
}
...