当前位置: 首页 > 知识库问答 >
问题:

Spring boot无法识别mvn liquibase CLI更改,反之亦然

冯峻
2023-03-14

我面临一个问题与Spring引导和mvn LiquiBase。当我提交更改时,我可以通过标记更新和回滚liquibase

mvn liquibase:update
mvn liquibase:rollback -Dliquibase.rollbackTag=0.0.0 

不幸的是,当我用LiquiBase:Update提交更改时,我无法启动spring boot应用程序。

org.springframework.beans.factory.BeanCreationException:创建类路径资源[org/springframework/boot/autoconfigure/liquiBase/liquiBaseautociguration$liquiBaseConfiguration.class]中定义的名为“liquiBase”的bean时出错:调用init方法失败;嵌套异常为LiquiBase.exception.MigrationFailedException:更改集类路径迁移失败:db/changelog/changelog-0.0.1.xml::0.0.1::

这告诉我spring boot尝试再次运行变更集。

下面是我在pom.xml中的配置

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

            <configuration>
                <driver>org.html" target="_blank">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=类路径:db/changelog-master.xml spring.liquibase.test-rollback-on-update=true

我猜changelog文件的标记是正确的,因为它在CLI中也行不通。

谢谢你。

共有1个答案

笪智志
2023-03-14

我猜maven中类路径与springboot应用程序中的类路径是不同的。Liquibase计算类路径并将其存储在db中的某个属性中(我不知道它的名称)。因此,当您使用maven准备db,然后运行应用程序时,文件的路径是不同的,对于liquibase,这意味着类似于新的changelog文件。

您可以通过将LogicalFilePath属性添加到所有changelog文件来修复此问题。

 类似资料:
  • 字符串不能解析为类型

  • 我有一个与cassandra连接的springboot应用程序。我试图在地图中创建地图,但遇到以下异常。在我看来,即使我使用了冻结值,它仍在发送cal,但没有关键字冻结 错误 代码 马文

  • 通常,程序会问我是否必须永久接受它。为什么不再发生这种事了?

  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢

  • 问题内容: 有没有简单的方法可以将(Java 8中引入的)转换为对象? “简单”是指比这更简单: 对我来说似乎有点尴尬。 由于我们仅对日期部分感兴趣,并且两个对象都没有时区信息,因此为什么要明确引入时区?转换应隐式采用午夜时间和系统默认时区。 问题答案: 其实有。有一个静态方法的valueOf在这不正是那个对象。所以我们有 就是这样。没有明确设置时区,因为本地时区是隐式获取的。 从文档: 提供的L