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

Maven WAR JSP项目连接MySQL报错:找不到合适驱动求排查方案

解决JSTL SQL标签连接MySQL 8.x的"No suitable driver found"问题

从你的报错和配置来看,核心问题是MySQL 8.x的JDBC驱动配置和旧版本有差异,加上一些细节没到位,导致无法正确建立连接。这里给你几个针对性的解决思路:


1. 修正JDBC驱动类名

MySQL 8.x已经废弃了旧的com.mysql.jdbc.Driver驱动类,改用com.mysql.cj.jdbc.Driver。你当前的<sql:setDataSource>里用了旧类名,这会导致Tomcat无法找到正确的驱动实现。

修改后的代码示例:

<sql:setDataSource var="mystraDB" driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mystra?useSSL=false&serverTimezone=UTC" user="root" password="###"/>

2. JDBC URL必须添加时区参数

MySQL 8.x强制要求设置数据库时区,否则会抛出连接异常,这也是导致"无合适驱动"报错的常见诱因之一。在URL末尾添加serverTimezone参数,比如用UTC或者你本地的时区(比如Asia/Shanghai),同时建议关闭SSL(开发环境下)避免额外警告。

3. 确认驱动包的部署状态

虽然你已经把mysql-connector-java-8.0.21.jar放到Tomcat的lib目录,但请再检查这几点:

  • 确保Tomcat已经完全重启(不是热部署,要停止后再启动),否则新添加的驱动不会被加载。
  • 确认驱动包没有损坏,文件大小和官方下载的一致。
  • 检查Tomcat的lib目录里有没有其他版本的MySQL驱动,避免版本冲突。

4. 调整Maven依赖的范围

你的pom.xml里mysql驱动依赖是默认的compile范围,这会把驱动包打包进WAR的WEB-INF/lib目录,和Tomcatlib里的驱动形成重复,可能引发类加载冲突。建议把依赖范围改成provided,告诉Maven这个驱动由容器(Tomcat)提供:

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.21</version>
  <scope>provided</scope>
</dependency>

额外排查步骤

如果以上步骤还是没解决问题,可以查看Tomcat的logs/catalina.out日志,里面会有更详细的异常栈,能帮你定位是驱动加载失败还是连接参数错误。比如如果驱动类找不到,日志里会出现ClassNotFoundException的明确信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:22:54