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

 更新时间:2024年03月14日 14:49:44   作者:DayFight_DayUp  
大家在连接mysql的时候,启动项目,会警告你推荐使用com.mysql.cj.jdbc.Driver 而不是com.mysql.jdbc.Driver,本文主要介绍了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 数据库 like 语句通配符模糊查询小结

    MySQL 数据库 like 语句通配符模糊查询小结

    这篇文章主要介绍了MySQL 数据库 like 语句通配符模糊查询小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • mysql临时表用法分析【查询结果可存在临时表中】

    mysql临时表用法分析【查询结果可存在临时表中】

    这篇文章主要介绍了mysql临时表用法,结合实例形式分析了MySQL将查询结果存储在临时表中的相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • mysql闪回工具binlog2sql安装配置教程详解

    mysql闪回工具binlog2sql安装配置教程详解

    这篇文章主要介绍了mysql闪回工具binlog2sql安装配置详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • MySQL和Redis的数据一致性问题

    MySQL和Redis的数据一致性问题

    这篇文章主要介绍了MySQL和Redis的数据一致性问题,下面文章围绕Redis大的相关资料展开详情,需要的小伙伴可以参考一下
    2022-04-04
  • 通过两种方式增加从库——不停止mysql服务

    通过两种方式增加从库——不停止mysql服务

    现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库。前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作
    2015-11-11
  • MySQL安装后默认自带数据库的作用详解

    MySQL安装后默认自带数据库的作用详解

    这篇文章主要介绍了MySQL安装后默认自带数据库的作用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 教你如何使用MySQL8递归的方法

    教你如何使用MySQL8递归的方法

    这篇文章主要介绍了教你如何使用MySQL8递归的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 在mac上如何使用终端打开XAMPP自带的MySQL

    在mac上如何使用终端打开XAMPP自带的MySQL

    本文给大家介绍在mac上如何使用终端打开XAMPP自带的MySQL,解决方法非常简单,需要的朋友参考下吧
    2016-12-12
  • 一键搭建MYSQL主从,轻松应对数据备份与恢复

    一键搭建MYSQL主从,轻松应对数据备份与恢复

    MYSQL主从是一种常见的数据库架构,它可以提高数据库的可用性和性能,在主从架构中,主数据库负责处理写操作,而从数据库负责处理读操作,当主数据库发生故障时,从数据库可以接管并继续提供服务,从而实现高可用性,需要的朋友可以参考下
    2023-10-10
  • MySQL的索引和复合索引的实现

    MySQL的索引和复合索引的实现

    在数据库中,索引是一种特殊的数据结构,它可以帮助我们快速地查询和检索数据,本文主要介绍了MySQL的索引和复合索引的实现,感兴趣的可以了解一下
    2023-11-11

最新评论