MySQL JDBC驱动版本与数据库版本的对应关系及注意事项

2023年 8月 12日 30.4k 0

MySQL JDBC驱动版本与数据库版本的对应关系及注意事项

事情发生

学了三遍的servlet,经典老师又教的万遍登陆注册,并且让实现,并且让演示,我们老师可能和之前的小学期公司老师完全没有沟通过,我们小学期大作业都做了一个小项目出来还搁这登陆注册。就把五个月前写的一个小项目拿出来,是一个类似菜鸟教程的网站,不过只有java的教程,这都是后话,

项目地址为:https://gitee.com/zxeao/Study_Station.git大佬有兴趣可以看看

里面有登录注册,就想着跑一下,给老师演示演示得了,问题出现了,因为之前的服务器过期了,我把数据库环境搭在自己的电脑上,跑起来之后,后台报错,前端登录也是500错误,这就奇了怪了。

错误缘由

前端报错如下:

这谁受得了,自己亲生的项目在自己手里跑不起来,于是研究了一下报错,

java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:455)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
at utils.DBHelper.getConnection(DBHelper.java:27)
at DAO.UserDao.queryLogin(UserDao.java:22)
at Controller.loginController.doPost(loginController.java:29)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

发现问题的根源就在DBHelper包,数据库没有链接上,我在idea还是在navicat上都能连接上,正当我百思不得其解,突然想到老师讲过,mysql对应的jdbc驱动版本的问题。查阅相关资料之后,得知是由于jdbc驱动包引发的问题,我之前服务器上的MySQL版本是8+版本,我查看了现在本机的MySQL版本

果然,版本不一致,我之前在maven里面配置的也是8.0.15的驱动版本,正想着去找5+数据库的驱动版本,打开我的pom一看,

这不就有么?之前做的准备足了现在就不用坐牢了。

解决方法

于是把MySQL驱动的版本换成5.1.38,

更新之后,正当我满心欢喜的等待跑起来,正常登录一下的时候,问题又出现了

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1291)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at utils.DBHelper.getConnection(DBHelper.java:24)
at DAO.UserDao.queryLogin(UserDao.java:22)
at Controller.loginController.doPost(loginController.java:29)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

不是,现在版本也对应上了,为什么还会报错,跑不起来呢?问题就在

com.mysql.cj.jdbc.Driver

大家肯定还见过

com.mysql.jdbc.Driver

这俩区别在哪,大家看我下面的注意事项。

就是这俩的问题,当我把cj去掉之后,就跑起来了

只能说确实好看。

版本对应

所以我简单做了个整理,把驱动版本和MySQL数据库版本做个可用性对应。

mysql-connector-java MySQL JDK 补充
8.0.x 5.6、5.7、8.0 4.2 JDK 8.0或更高版本 全面上市。推荐版本。
5.1.x 5.6、5.7、8.0 3.0、4.0、4.1、4.2 JDK 5.0和JDK 8.0或更高版本 一般可用性

相关文章

处理PHP内存溢出错误并生成对应报错提示的实用方法

2023-08-07
报错
生成
溢出

Golang中的错误处理:合理设置返回错误码

2023-08-07
设置
错误
返回

SQL数据库触发器语法详解 (sql数据库触发器语法)

2023-08-06
数据库
语法
触发器

快速简单的删除Oracle数据库字段方法 (删除oracl数据库字段)

2023-08-06
数据库
字段
删除

如何打开社工数据库bak文件 (社工数据库bak怎么打开)

2023-08-06
数据库
打开
社工

实现数据库按拼音排序的方法和技巧 (数据库按拼音排序)

2023-08-06
数据库
排序
按拼音

探究Sybase数据库的性能和功能特点 (sybase数据库怎么样)

2023-08-06
数据库
性能
探究

SQL Server 如何成功建立自己的数据库? (sql server 建立数据库)

2023-08-06
数据库
自己的
建立

如何在Oracle中查看数据库触发器? (oracle查看数据库触发器)

2023-08-06
数据库
查看
触发器

数据库表数据量千万级,对性能影响有多大? (数据库表千万级数据量多吗)

2023-08-06
数据库
级数
有多大

如何使用Oracle按时间导出表数据库? (oracle按时间导出表数据库)

2023-08-06
数据库
导出
如何使用

数据库存储:帖子长期保存,信息永不丢失 (帖子存数据库)

2023-08-06
数据库
丢失
帖子

解决PHP会话并发错误并生成对应报错提示的方法

2023-08-06
报错
会话
并发

如何处理PHP数据库连接超时错误并生成相应的报错信息

2023-08-06
报错
超时
如何处理

小米六数据库:全方位数据保障和优化方案 (小米六数据库)

2023-08-05
数据库
优化
小米

简易教程:使用dbe数据库实现数据连接 (dbe数据库 数据连接)

2023-08-05
数据
数据库
连接

Oracle实现多个数据库链接的简便方法 (oracle链接多个数据库)

2023-08-05
数据库
多个
链接

数据库索引:用哪种方法建立? (数据库索引用什么建的)

2023-08-05
索引
数据库
哪种

实现高效缓存同步:Redis数据库技巧大全 (redis 数据库缓存同步)

2023-08-05
数据库
缓存
同步

如何利用数据库实现高效的模糊匹配查询? (数据库实现模糊查询)

2023-08-05
查询
数据库
模糊

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论