Пружинный ботинок не распознает изменения mvn liquibase и наоборот - PullRequest
0 голосов
/ 04 марта 2019

У меня проблема с пружинной загрузкой и mvn liquibase.Я могу обновлять и откатывать жидкую базу с помощью тега, когда я отправляю изменения с помощью

mvn liquibase:update

и откатываю их с помощью

mvn liquibase:rollback -Dliquibase.rollbackTag=0.0.0 

К сожалению, я не могу запустить приложение весенней загрузкикогда я отправляю изменения с помощью liquibase: обновите.

org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'liquibase', определенного в ресурсе пути к классу [org / springframework / boot / autoconfigure / liquibase / LiquibaseAutoConfiguration $ LiquibaseConfiguration.class]: вызов initметод не удался;Вложенное исключение - liquibase.exception.MigrationFailedException: не удалось выполнить миграцию для набора изменений classpath: db / changelog / changelog-0.0.1.xml :: 0.0.1 ::

, который говорит мне, что весенняя загрузка пытается запуститьснова наборы изменений.

Когда я смотрю на таблицу databaseloglog, там есть дублирующиеся записи с разными значениями deploy_ids, может ли это быть проблемой?

Вот скриншот

Ps: Когда я позволяю Spring boot выполнить обновление, я могу запустить приложение, но не могу выполнить откат через CLI: (

Вот моя конфигурация в pom.xml

    <plugins>
        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.6.3</version>

            <configuration>
                <driver>org.postgresql.Driver</driver>
                <url>connection/url>
                <username>user</username>
                <password>password</password>
                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                <rollbackTag>0.0.0</rollbackTag>
                <changeLogFile>destination of rollback file</changeLogFile>
            </configuration>
        </plugin>
    </plugins>
</build>

в application.properties

spring.liquibase.change-log = classpath: db / changelog-master.xml spring.liquibase.test-rollback-on-update = true

Полагаю, тегирование файлов журнала изменений является правильным, поскольку оно также не будет работать в CLI.

Спасибо.

1 Ответ

0 голосов
/ 04 марта 2019

Полагаю, что classpath в maven отличается от classpath в приложении springboot.Liquibase вычисляет путь к классам и сохраняет его в некотором свойстве в БД (я не знаю, как это называется).Поэтому, когда вы готовите свою базу данных с помощью maven, а затем запускаете приложение, путь к вашим файлам отличается, поэтому для liquibase это означает что-то вроде нового файла изменений.

Это можно исправить, добавив атрибут logicalFilePathко всем вашим файлам изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...