com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别
大家在连接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 new
driver class is 'com.mysql.cj.jdbc.Driver'.
The driver is automatically registered via the SPI
and 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 connection
must 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
连接mysql报错——没有设置“usessl=false”的问题
这篇文章主要介绍了连接mysql报错——没有设置“usessl=false”的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-08-0864位Win10系统安装Mysql5.7.11的方法(案例详解)
小编在安装64位Win10系统的mac book笔记本上用mysql-installer-community-5.7.11.0安装Mysql5.7.11,在配置mysql server时老是卡住,报错。下面小编把安装方法分享给大家,供大家参考2016-08-08
最新评论