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

2023-11-02

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

        当5之后的版本选择com.mysql.jdbc.Driver的时候,会有警告提示,替换为com.mysql.cj.jdbc.Drive

        查看源码可知,老版本的Driver 继承了新版本的Driver,通过继承的方式兼容老版本,并添加了告警提示,如下:

public class Driver extends com.mysql.cj.jdbc.Driver {
    public Driver() throws SQLException {
    }

    static {
        System.err.println("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 是 mysql-connector-java 5中的, 
  • com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6以及以上中的

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

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

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

driver-class-name=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,像下面这样配置:

driver-class-name=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 的区别_DayFight_DayUp的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别 的相关文章

随机推荐

  • c语言中八进制输出的格式说明符,C 的输入&输出格式说明符讲解

    C的输入 输出格式说明符讲解 方便你了解C的输入与输出格式的写法 d整型输出 ld长整型输出 o以八进制数形式输出整数 x以十六进制数形式输出整数 或输出字符串的地址 u以十进制数输出unsigned型数据 无符号数 注意 d与 u有无符号
  • win服务器上的虚拟机反应慢,高手解读Win10系统打开vmware特别慢的具体方法

    大家在用win10系统的过程中 各位难免会遇到Win10系统打开vmware特别慢的问题 Win10系统打开vmware特别慢这样的情况还真的把很多电脑高手都为难住了 别着急 我们自己就可以处理掉Win10系统打开vmware特别慢的问题
  • 【毕业季·进击的技术er】 我 能

    你陪我步入蝉夏 越过城市喧嚣 歌声还在游走 你榴花般的双眸 不见你的温柔 丢失花间欢笑 岁月无法停留流云 的等候 在纸短情长里 我们迎来了毕业季 这是告别 也是迈向新起点的开始 本文我从一个大三在校生的角度来讲讲我和编程的那些事 希望技术社
  • Android 系统865虚拟化集成无源码apk示例

    一 环境 高通865虚拟化Android 10 版本 二 具体修改的文件 以集成OppoAnonymousId apk为例 1 新建OppoAnonymousId目录 将apk放到该目录 vendor qcom proprietary pr
  • g2o编译错误

    ORBSLAM2 with pointcloud map g2o with orbslam2 g2o types slam2d edge se2 pointxy bearing cpp 51 39 error cannot convert
  • uniapp uni.setClipboardData成功默认提示

    uni setClipboardData data hello uniapp success function 重点 做笔记 在success中加入uni hideToast 可以解决 uni hideToast 以下就可自定义操作了 fa
  • SpringBoot(八)拦截器Interceptor

    上篇介绍了Filter过滤器的使用 提起过滤器 就不得不再提起另外一个叫做拦截器的东西 两者的作用类似 都可以实现拦截请求的作用 但其实两者有着非常大的区别 本篇 我们就来学习下拦截器的使用 如果你是新手 且没看过我之前的一系列Spring
  • Ubuntu系统使用光盘作为apt-get源

    1 将系统光盘插入光驱 接入系统 并挂载 mount dev sr0 mnt 2 修改apt get源 将光驱挂着的目录加入源 vim etc apt sources list 在首行加入 deb file mnt trusty main
  • 【Linux服务器】 .bashrc设置永久环境变量后不起作用的问题

    在使用vi打开 bashrc文件以后设置环境变量 vim bashrc export PATH PATH home uusama mysql bin 然而发现设置了以后不起作用 这时候可以在终端界面使用export命令查看当前所有的PATH
  • 基于Aidlux的自动驾驶智能预警方案

    forewarning py为智能预警代码 运行后视频结果如下所示 基于Aidlux的自动驾驶智能预警方案 YOLOP导出onnx模型 执行命令 python3 export onxx py height 640 width 640 执行完
  • 问题 E: 括号的最大嵌套深度

    题目描述 如果字符串满足以下条件之一 则可以称之为 有效括号字符串 valid parentheses string 可以简写为 VPS 字符串是一个空字符串 或者是一个不为 或 的单字符 字符串可以写为 AB A 与 B 字符串连接 其中
  • 机器学习课后习题 --- 逻辑回归

    一 单选题 1 一监狱人脸识别准入系统用来识别待进入人员的身份 此系统一共包括识别4种不同的人员 狱警 小偷 送餐员 其他 下面哪种学习方法最适合此种应用需求 A 二分类问题 B 多分类问题 C 回归问题 D 聚类问题 2 以下关于分类问题
  • webpack5基本教程-1

    基本使用 Webpack 是一个静态资源打包工具 它会以一个或多个文件作为打包的入口 将我们整个项目所有文件编译组合成一个或多个文件输出出去 输出的文件就是编译好的文件 就可以在浏览器段运行了 我们将 Webpack 输出的文件叫做 bun
  • nginx 超时配置说明

    keepalive timeout 默认75s 通常keepalive timeout应该比client body timeout大 如果值为0 则响应头Connection close Syntax keepalive timeout t
  • android log缓冲区大小,科普:开发者模式日志记录缓冲区到底怎样设置

    概念 志缓冲区是小型的 用于短期存储将写入到磁盘上的重做日志的变更向量的临时区域 变更向量 是应用于某些对象的修改 执行DML语句会生成应用于数据的变更向量 有了重做日志 数据库就可以确保数据永不丢失 每当数据块发生更改时 都会将应用于块的
  • 微信开发时, 如何进行服务器验证及接收回复信息呢? 分享原生PHP代码如下:

    if isset GET echostr signature GET signature timestamp GET timestamp nonce GET nonce 验证时会传递这个信息 echostr GET echostr toke
  • STM32_超声波测距

    超声波测距 超声波测距原理 超声波模块说明书 超声波注意事项 HMI串口屏 代码解析 测距结果 超声波测距原理 利用声音测距 声音在空气中的速度是340m s 15 当声音传播时 若遇到障碍物时 就会被反弹回来 通过计时反弹回来的时间就可以
  • 天池大赛:街景字符编码识别——Part5:模型集成

    街景字符编码识别 更新流程 Task01 赛题理解 Task02 数据读取与数据扩增 Task03 字符识别模型 Task04 模型训练与验证 Task05 模型集成 老夜店鸟 炸 炸辽 给朋友看要破壳的鸡蛋 比赛链接 Part5 模型集成
  • 动态规划 Leetcode 32 Longest Valid Parentheses(最长有效括号)

    题目 给定一个只包含 和 的字符串 找出最长的包含有效括号的子串的长度 示例 1 输入 输出 2 解释 最长有效括号子串为 示例 2 输入 输出 4 解释 最长有效括号子串为 链接 中文版 https leetcode cn com pro
  • com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别

    大家在连接mysql的时候 启动项目 会警告你推荐使用com mysql cj jdbc Driver 而不是com mysql jdbc Driver 当5之后的版本选择com mysql jdbc Driver的时候 会有警告提示 替换