【MySQL版本问题】Eclipse链接MySQL数据库出现java.lang.unsupportClassVersionError+5.x和8.x版本连接方式差异

查阅连接数据库操作后,发现MySQL数据库版本很重要。

8.0以前:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf8&useSSL=false
/*mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:
1. 存数据时:数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2.取数据时:在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。*/

8.0以后:

jdbc.driver=com.mysql.cj.jdbc.Driver//多了一个cj字段
jdbc.url=jdbc:jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
//比较旧版本多了一个时区设置

运行后下述SSL报错,原因在于:mysql规范中默认开启SSL连接,但是必须提交服务器身份验证
在这里插入图片描述
在这里插入图片描述

下意识看了看自己已经安装的版本信息,刚好是8.0,由于是在官方网址下载的最新版,没理由找回旧版本安装,越新越好。但是,却出现了一系列无法连接的错误。

在这里插入图片描述
在这里插入图片描述
已经完全按照规范步骤下好对应的MySQL驱动包,添加依赖,编译却出现无论如何都解决不了的unsupportClassVersionError,我的jdk是1.7版本,MySQL的驱动包是mysql-connector-java-8.0.16,按照正常来说我应该能够成功链接上了,但是并没有。我翻找原因终于发现:
在这里插入图片描述
jdk1.7不能使用mysql6.0以上的驱动包,但是我同时又犯迷糊了,我的MySQL版本不就是8.0的吗?这个版本号难道不是指安装的数据库软件版本,而是指驱动包的版本?修改驱动包为mysql-connector-java-5.1.49.jar,果然!数据库能够成功连接读写数据了。
总结一下:
MySQL数据库版本是5.0.X版本或者8.0.X版本,是指具体的驱动包版本,而不是特指你安装的数据库程序的版本,就目前了解来讲,数据库程序应该是向下兼容的,程序版本为8.0的也可以使用旧的驱动包,使用旧的链接方式读写数据库就是使用旧的mySQL数据库特性。如果非要使用8.0以上的数据库版本,驱动包就需要选择8.0以上,并且jdk为1.8以上。想偷懒保持1.7的就只能用回旧的jar驱动包了,目前8.0数据库版本也是同时支持新旧两种jar驱动包的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章