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
相关产品推荐
相关产品推荐

