You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Maven通过Flyway执行数据库迁移时无法连接数据库

问题原因

Maven的Flyway插件不会自动读取Spring Boot的application.properties配置,这就是你的Spring应用能正常连接数据库,但Flyway迁移命令报错的核心原因——插件找不到数据库连接参数。

解决方案

以下是几种可行的解决方式,按需选择:

1. 在pom.xml中直接配置Flyway插件参数

在pom.xml里找到flyway-maven-plugin的配置块,添加数据库连接信息:

<build>
    <plugins>
        <plugin>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-maven-plugin</artifactId>
            <version>9.16.3</version>
            <configuration>
                <url>jdbc:postgresql://localhost:5432/candidate</url>
                <user>myusername</user>
                <password>mypassword</password>
                <baselineOnMigrate>true</baselineOnMigrate>
            </configuration>
        </plugin>
    </plugins>
</build>

如果不想硬编码,可通过Maven属性统一管理:

<!-- 在pom.xml的properties块定义参数 -->
<properties>
    <db.url>jdbc:postgresql://localhost:5432/candidate</db.url>
    <db.username>myusername</db.username>
    <db.password>mypassword</db.password>
</properties>

<!-- 插件中引用属性 -->
<configuration>
    <url>${db.url}</url>
    <user>${db.username}</user>
    <password>${db.password}</password>
    <baselineOnMigrate>true</baselineOnMigrate>
</configuration>

2. 让Flyway插件读取Spring的application.properties

通过properties-maven-plugin把application.properties中的参数加载到Maven属性,再让Flyway插件引用:

<plugins>
    <!-- 先加载application.properties到Maven属性 -->
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0.0</version>
        <executions>
            <execution>
                <phase>initialize</phase>
                <goals>
                    <goal>read-project-properties</goal>
                </goals>
                <configuration>
                    <files>
                        <file>src/main/resources/application.properties</file>
                    </files>
                </configuration>
            </execution>
        </executions>
    </plugin>

    <!-- Flyway插件引用加载后的属性 -->
    <plugin>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-maven-plugin</artifactId>
        <version>9.16.3</version>
        <configuration>
            <url>${spring.datasource.url}</url>
            <user>${spring.datasource.username}</user>
            <password>${spring.datasource.password}</password>
            <baselineOnMigrate>${spring.flyway.baselineOnMigrate}</baselineOnMigrate>
        </configuration>
    </plugin>
</plugins>

3. 命令行临时传递参数

执行迁移命令时直接通过-D参数指定连接信息,适合临时测试:

mvn flyway:migrate -Dflyway.url=jdbc:postgresql://localhost:5432/candidate -Dflyway.user=myusername -Dflyway.password=mypassword -Dflyway.baselineOnMigrate=true
额外注意

检查你的application.properties第一行开头的空格,虽然Spring会自动忽略,但建议删除避免潜在的配置解析问题:

spring.datasource.url=jdbc:postgresql://localhost:5432/candidate
spring.datasource.username=myusername
spring.datasource.password=mypassword
spring.flyway.baselineOnMigrate=true

内容的提问来源于stack exchange,提问作者Mary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 07:27:20