Tomcat 10.0.27无法通过JDBC连接MySQL数据库问题求助
Tomcat 10.0.27 无法通过JDBC连接MySQL数据库
本地Tomcat服务器无法识别MySQL数据库,使用Tomcat 10.0.27,已引入MySQL Connector 8.0.28.jar、tomcat-dbcp-java-9.0.58.jar和tomcat-juil-9.0.58.jar,但问题依旧。
问题截图:
当前配置文件
META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/MySQLDataBase" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" url="jdbc:mysql://localhost:3306/MySQLDataBase" driverClassName="com.mysql.jdbc.Driver" username="***" password="***" /> </Context>
WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" version="5.0"> <resource-env-ref> <resource-env-ref-name>jdbc/MySQLDataBase</resource-env-ref-name> <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> </resource-env-ref> </web-app>
问题排查与修复步骤
1. 更新MySQL驱动类名
MySQL Connector/J 8.0的驱动类已更新为com.mysql.cj.jdbc.Driver,替换context.xml中的旧类名:
driverClassName="com.mysql.cj.jdbc.Driver"
2. 完善JDBC URL参数
MySQL 8.0强制要求时区配置,添加必要参数:
url="jdbc:mysql://localhost:3306/MySQLDataBase?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"
根据实际时区调整serverTimezone,比如UTC。
3. 移除不兼容依赖
Tomcat 10自带连接池实现,tomcat-dbcp-java-9.0.58.jar和tomcat-juil-9.0.58.jar是Tomcat 9的组件,与Tomcat 10存在类冲突,直接删除这两个文件。
4. 调整驱动包放置位置
将MySQL Connector/J 8.0.28.jar放到Tomcat安装目录/lib下,不要放在项目WEB-INF/lib,避免类加载冲突。
5. 适配Jakarta EE命名空间
Tomcat 10使用Jakarta EE API,将javax.sql.DataSource替换为jakarta.sql.DataSource:
- 修改
context.xml的type属性:
type="jakarta.sql.DataSource"
- 修改
web.xml的resource-env-ref-type:
<resource-env-ref-type>jakarta.sql.DataSource</resource-env-ref-type>
6. 验证基础连接信息
确认:
- MySQL服务正常运行在3306端口
- 数据库
MySQLDataBase已创建 - 配置的用户名/密码正确,且拥有该数据库的访问权限
内容的提问来源于stack exchange,提问作者OLEGA_zz
相关产品推荐
相关产品推荐

