必须在 Liquibase 上指定 changeLogFile 错误

Posted

技术标签:

【中文标题】必须在 Liquibase 上指定 changeLogFile 错误【英文标题】:The changeLogFile must be specified error on Liquibase 【发布时间】:2020-06-21 04:05:46 【问题描述】:

我是 Liquibase 的新手,我尝试将 liquibase 与 postgres 数据库一起使用,以使用 liquibase 脚本创建数据库表。我所做的是,我已经手动创建了 Postgres 表并通过运行命令

mvn liquibase:generateChangeLog

我创建了 liquibase-outputChangeLog.xml 文件。现在我尝试更新该脚本并在数据库中再创建一个表。为此,我在我的 changeLog.xml 文件中为该新表编写 XML 代码并尝试执行命令

mvn liquibase:update

但它给了我以下错误

必须指定 ChangeLogFile。

下面是我的 POM.xml 文件。

    <dependency>
        <groupId>tech.sample</groupId>
        <artifactId>common-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>tech.sample</groupId>
        <artifactId>common-starter-logging</artifactId>
    </dependency>

    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
        <version>3.8.7</version>
    </dependency>

    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-maven-plugin</artifactId>
        <version>3.8.7</version>
    </dependency>

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.2.5</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
        </plugin>
        <!--Sonar Plugins-->
        <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>com.github.temyers</groupId>
            <artifactId>cucumber-jvm-parallel-plugin</artifactId>
        </plugin>

        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.4.1</version>
            <configuration>
                <propertyFile>src/main/resources/liquibase.properties</propertyFile>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>update</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

谁能帮帮我,这里有什么问题。

强文本

【问题讨论】:

edit您的问题(点击下方的edit链接)并向我们展示您的pom.xml完成命令如何调用 Liquibase。 Formatted text 请no screen shots - edit 您的问题,请不要在 cmets 中发布代码 【参考方案1】:

我认为问题在于,在 pom.xml &lt;propertyFile&gt;src/main/resources/liquibase.properties&lt;/propertyFile&gt; 中指定的属性文件中,您使用了 ChangeLogFile(大写 C)而不是 changeLogFile(小写 C)。请注意,错误消息显示正确的大小写。

【讨论】:

【参考方案2】:

对于数据库更新,您必须在 pom.xml 的插件 liquibase-maven-plugin 部分中指定属性 changeLogFile。 见sn-p:

        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>$liquibase.version</version>
            <configuration>                  
                <propertyFile>src/main/resources/db/liquibase.properties</propertyFile>
                <changeLogFile>src/main/resources/db/updateDb.xml</changeLogFile>
            </configuration>
        </plugin> 

在 liquibase 4.7.1

上运行

这里是完整的 MVN 日志:

bmolino@Betelgeuse:~/git/simbo-repo/simbo/simbo-ws(master)$ /opt/apache-maven-3.6 .3/bin/mvn liquibase:更新 [INFO] 正在扫描项目... [信息] [信息] ----------------it.invallee.webapp.simbo-ws:simbo-ws >---------------- [INFO] 构建 simbo-ws 0.0.1-SNAPSHOT [INFO] --------------------------------[jar ]-- ------------------------------------------- [信息] [INFO] --- liquibase-maven-plugin:4.7.1:update (default-cli) @ simbo-ws --- [信息] ---------------------------------------------------- -------------------------------- [项目,插件描述符] [INFO] 解析 Liquibase 属性文件 [INFO] 文件:src/main/resources/db/liquibase.properties [INFO] 此任务未使用属性文件中的“outputChangeLogFile”。 [信息] ---------------------------------------------------- -------------------------------- [信息] [信息] [INFO] Liquibase 社区 4.7.1 由 Liquibase [信息] ####################################### ############ ## _ _ _ _ ## ## | | (_) (_) | ## ## | | _ __ _ _ _ _| |__ __ _ ___ ___ ## ## | | | |/ _` | | | | | '_ \ / _` / __|/ _ \ ## ## | |___| | (_| | |_| | | |_) | (_| \__ \ __/ ## ## \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___| ## ## | | ## ## |_| ## ## ## ## 在 docs.liquibase.com 上获取文档 ## ## 在 learn.liquibase.com 上获得认证课程 ## ## 免费架构更改活动报告在## ## https://hub.liquibase.com ## ## ## ################################################# ## 在 16:05:17 开始 Liquibase(版本 4.7.1 #1239 构建于 2022-01-20 20:31+0000) [INFO] 将默认架构名称设置为公共 [INFO] 解析 Liquibase 属性文件 src/main/resources/db/liquibase.properties 以获取 changeLog 参数 [INFO] 在数据库上执行:jdbc:postgresql://XX.XXX.XXX.XXX:5432/simbo [INFO] 成功获取更改日志锁 [INFO] 从数据库更改日志中读取 运行变更集:src/main/resources/db/updateDb.xml::1::bob [INFO] 表部门已创建 [INFO] ChangeSet src/main/resources/db/updateDb.xml::1::bob 16ms 运行成功 [INFO] 成功释放更改日志锁 [信息] ---------------------------------------------------- -------------------------------- [信息] [信息] ---------------------------------- ---------------------------------- [信息] 建立成功 [信息] ---------------------------------- ---------------------------------- [INFO] 总时间:2.073 秒 [INFO] 完成时间:2022-01-28T16:05:18+01:00 [信息] ---------------------------------- ----------------------------------

【讨论】:

以上是关于必须在 Liquibase 上指定 changeLogFile 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Liquibase 4.0 中删除了通过绝对路径指定文件

Liquibase 前置条件的 Groovy 语法是啥?

Liquibase ERROR 数据库 URL 未指定为参数或属性文件

无法与 liquibase gradle 插件生成差异

在现有数据库上使用 liquibase

如何为 liquibase 变更集设置超时?