com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别

2024-04-16 0 881

大家在连接mysql的时候,启动项目,会警告你推荐使用com.mysql.cj.jdbc.Driver而不是com.mysql.jdbc.Driver

那么这两者到底有什么区别呢

本质区别:

com.mysql.jdbc.Driver是 mysql-connector-java 5中的,com.mysql.cj.jdbc.Driver是 mysql-connector-java 6以及以上中的

在使用com.mysql.jdbc.Driver时,配置是需要下面这样的:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=

在使用com.mysql.cj.jdbc.Driver时,则是需要下面这样的配置的:

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=

注意:

需要指定时区(serverTimezone=UTC)和 使用SSL (useSSL=false)

另外还需注意:

在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong,像下面这样配置:

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?serverTimezone=Shanghai&?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=

情况分析:

如果你maven使用的是6版本以及以上版本的mysql驱动:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>

这是使用的是8.0.16版本的Mysql驱动,那么会报一下的错误:

Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The newdriver class is 'com.mysql.cj.jdbc.Driver'.The driver is automatically registered via the SPIand manual loading of the driver class is generally unnecessary.

上面报错翻译:

正在加载类'com.mysql.jdbc.Driver'。 这已被弃用。 新的驱动程序类是'com.mysql.cj.jdbc.Driver'。驱动程序通过SPI自动注册并且通常不需要手动加载驱动程序类。

这时候你就要把com.mysql.jdbc.Driver 改为com.mysql.cj.jdbc.Driver

但是你改完之后还是会报错:

WARN: Establishing SSL connection without server’s identity verification is not recommended.According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connectionmust be established by default if explicit option isn’t set.For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’.You need either to explicitly disable SSL by setting useSSL=false,or set useSSL=true and provide truststore for server certificate verification.

上面报错翻译:

警告:建议不要在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45 +,5.6.26+和5.7.6+要求SSL连接如果未设置显式选项,则必须默认建立。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“false”。您需要通过设置useSSL = false显式禁用SSL,或者设置useSSL = true并为服务器证书验证提供信任库。

这个时候如果不需要SSL验证,就在url后面加useSSL=false

这个时候就不会报警告了.

使用mysql 8.0.16 版本的驱动的时候解决如下报错:

java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone.

这是由于数据库和系统时区差异所造成的,在jdbc连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用gmt+8时区,需要写成GMT%2B8,否则会被解析为空。

再一个解决办法就是使用低版本的MySQL jdbc驱动,5.1.28不会存在时区的问题。

到此这篇关于com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别的文章就介绍到这了,更多相关com.mysql.jdbc.Driver com.mysql.cj.jdbc.Driver内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Mysql com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别 https://www.u-9.cn/database/mysql/185990.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务