IntelliJ中Java连接MySQL报错No suitable driver found for jdbc:mysql如何解决
解决方案
该报错的核心原因是你的Java项目运行时类路径下没有加载到MySQL对应的JDBC驱动包,IntelliJ内置的数据库工具自带独立的驱动依赖,和你的项目类路径不互通,因此会出现自带工具可运行SQL但代码执行报错的情况,可按以下步骤排查修复:
引入匹配版本的MySQL JDBC驱动
如果你使用Maven管理依赖,在pom.xml中添加如下配置(注意版本匹配你的MySQL服务版本,以下分别为MySQL 5.x和8.x的示例):<!-- MySQL 5.x 驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <!-- MySQL 8.x 驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>如果你使用Gradle管理依赖,在build.gradle中添加如下配置:
// MySQL 5.x implementation 'mysql:mysql-connector-java:5.1.49' // MySQL 8.x implementation 'mysql:mysql-connector-java:8.0.33'如果你手动导入jar包,可在IntelliJ中依次进入
File > Project Structure > Libraries,点击+号选择Java,选中你下载的对应版本mysql-connector-java jar包,添加到对应模块的依赖中即可。(可选但建议)显式注册驱动类
在调用DriverManager.getConnection前添加驱动加载代码,避免自动加载失效的问题:// MySQL 5.x 用这行 Class.forName("com.mysql.jdbc.Driver"); // MySQL 8.x 用这行 Class.forName("com.mysql.cj.jdbc.Driver");校验JDBC URL格式
若你使用的是MySQL 8.x版本,需要在URL后补充时区、SSL等参数,修改后的URL示例如下:String jdbcUrl = "jdbc:mysql://sql11.freesqldatabase.com:3306/sql11418144?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";确认运行时类路径包含驱动
普通Java项目可检查运行配置的类路径是否已经包含引入的驱动依赖;Web项目需要确认驱动包已经放置在WEB-INF/lib目录下,避免打包时遗漏依赖。
内容的提问来源于stack exchange,提问作者Christopher Martins
相关产品推荐
相关产品推荐

