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

在Micronaut中使用Gradle Flyway插件手动迁移遇错及数据源复用问题

解决方案

1. 修复数据库驱动缺失问题

报错No database found to handle jdbc:postgresql://localhost:5432/school_staff的核心原因是Flyway Gradle插件找不到PostgreSQL的JDBC驱动。需要在build.gradle中为Flyway添加驱动依赖:

plugins {
    id "io.micronaut.application" version "4.x.x"
    id "org.flywaydb.flyway" version "11.0.1"
}

dependencies {
    // 引入PostgreSQL驱动,版本可根据实际需求调整
    flywayRuntimeOnly 'org.postgresql:postgresql:42.7.3'
}

2. 复用application.properties中的数据源配置

通过Gradle读取src/main/resources/application.properties里的默认数据源配置,直接注入到Flyway插件中,避免重复配置:

flyway {
    // 加载application.properties配置文件
    def appProps = new Properties()
    file("src/main/resources/application.properties").withInputStream { stream ->
        appProps.load(stream)
    }

    // 复用默认数据源的配置项
    url = appProps.getProperty('datasources.default.url')
    user = appProps.getProperty('datasources.default.username')
    password = appProps.getProperty('datasources.default.password')
    
    // 迁移脚本默认路径为src/main/resources/db/migration,若路径不同可手动指定
    // locations = ['filesystem:src/main/resources/custom-migration-path']
}

3. 确认自动迁移已禁用

确保application.properties中已关闭Micronaut启动时的自动Flyway迁移:

# 全局禁用Flyway自动迁移
flyway.enabled=false
# 或仅针对默认数据源禁用
flyway.datasources.default.enabled=false

4. 执行迁移命令

配置完成后,重新运行迁移命令即可:

./gradlew flywayMigrate

额外提示

  • 若使用application.yml而非.properties,需添加SnakeYAML依赖并调整配置读取逻辑:
    dependencies {
        implementation 'org.yaml:snakeyaml:2.2'
    }
    
    flyway {
        def yaml = new org.yaml.snakeyaml.Yaml()
        def appProps = yaml.load(file("src/main/resources/application.yml").text)
        url = appProps.datasources.default.url
        user = appProps.datasources.default.username
        password = appProps.datasources.default.password
    }
    
  • 检查application.properties中的数据源配置键名是否正确,确保没有拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:34:52