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

Micronaut Test-Resources加载MySQL初始化脚本失败求助

解决Micronaut Test-Resources MySQL初始化脚本找不到的问题

核心问题与修复

你的配置存在两个关键错误:

  1. 多余的引号:password和init-script-path的值被双引号包裹,导致Testcontainers解析路径时把引号当成了路径的一部分
  2. 错误的路径:src/test/resources/是项目源码路径,编译后该目录下的文件会被放到classpath根目录,所以直接用脚本文件名即可

正确的application-test.properties配置

datasources.default.dialect=MYSQL
datasources.default.driverClassName=com.mysql.cj.jdbc.Driver
datasources.default.schema-generate=CREATE_DROP

test-resources.containers.mysql.image-name=mysql:8.1.0
test-resources.containers.mysql.db-name=testDB
test-resources.containers.mysql.username=dbuser
test-resources.containers.mysql.password=mypassword
test-resources.containers.mysql.init-script-path=init.sql

为什么这样修改?

  • 引号问题:Micronaut配置文件中,字符串值不需要额外加双引号(除非值本身包含空格或特殊字符),加了引号会被当成值的一部分,导致Testcontainers寻找名为"src/test/resources/init.sql"的文件,自然找不到。
  • 路径问题:Maven在构建测试时,会把src/test/resources下的所有文件复制到测试类路径的根目录(比如target/test-classes/),所以脚本在classpath中的路径就是init.sql,不需要带前缀或源码路径。

额外验证步骤

如果修改后还是有问题,可以做以下检查:

  • 确认init.sql确实存在于src/test/resources目录下,文件名和大小写完全匹配(MySQL容器默认大小写敏感,取决于系统环境)
  • 执行mvn test-compile后,查看target/test-classes/目录下是否有init.sql文件,确保构建工具正确复制了资源
  • 如果需要加载子目录下的脚本,比如src/test/resources/sql/init.sql,则配置值应为sql/init.sql

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:17:07