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

MacOS 14下Spring Boot 3.3.4连接MySQL 9.0.1驱动加载失败求助

解决Spring Boot连接MySQL 9.0时驱动加载失败的问题

问题核心分析

你遇到的矛盾点(能创建数据库列但启动报驱动加载失败),本质是编译时类加载器找不到驱动类,但运行时JPA初始化阶段临时加载到了驱动,但HikariCP连接池初始化时用的类加载器无法访问到驱动类,再加上MySQL 9.0与旧版驱动的兼容问题,导致报错。

分步解决方案

1. 替换并更新MySQL驱动依赖

MySQL从8.0.33开始将驱动包名称从mysql-connector-java改为mysql-connector-j,且MySQL 9.0需要适配8.0.33及以上版本的驱动。修改你的pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.4.0</version> <!-- 适配MySQL 9.0的最新稳定版 -->
    <!-- 暂时去掉<scope>runtime</scope>,解决IDE标红问题,后续可改回runtime -->
</dependency>

2. 简化application.properties配置

无需手动指定driverClassName,Spring Boot会自动根据JDBC URL推断驱动类。同时补充MySQL 9.0需要的URL参数:

spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update

3. 清理IDE缓存并重新加载依赖

  • 如果你用IntelliJ IDEA:点击File -> Invalidate Caches...,勾选"Clear file system cache and local history"后重启IDE
  • 执行Maven命令:mvn clean install,强制重新下载并编译依赖

4. 验证MySQL认证插件(可选)

MySQL 9.0默认使用caching_sha2_password认证插件,如果你的root用户还是旧的mysql_native_password,可以登录MySQL执行以下命令更新:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的密码';
FLUSH PRIVILEGES;

为什么之前能创建列?

JPA在初始化ddl-auto=update时,可能通过临时的类加载路径找到了驱动类,完成了表结构创建,但HikariCP连接池初始化时使用的是更严格的类加载器,无法访问到被标记为runtime scope的驱动类,因此启动时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:45:07