问题
今天在用 JOOQ 生成代码的时候,即运行 mvn clean install
命令时,出现以下错误,代码中指定的驱动明明是“com.mysql.jdbc.Driver”,但是报错信息中显示的确是驱动“com.mysql.

经搜索,
com.mysql.jdbc.Driver
是 mysql-connector-java 5 中的com.mysql.cj.jdbc.Driver
是 mysql-connector-java 6 及以上版本中的
但是,我用的 MySQL 连接器也不是 mysql-connector-java 6 及以上版本的:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
排查
- 检查引入的外部 jar 包,没问题

- 网上搜索到这样一句话:
当在项目加入 mysql-connector-java 的依赖,但却不指定版本的时候,SpringBoot 是默认为我们指定了一个版本的。
我代码中指定了 mysql-connector-java 的版本号,并且检查引入的 jar 包也是 5 版本的,故应该不是这里的问题。
- 通过以上思路,于是我检查了 SpringBoot 指定的默认版本:



通过切换 SpringBoot 版本,发现了真相
- 当 SpringBoot 是 2.0.x.RELEASE 及以下版本时,使用的是我们指定的 5.1.46 版本的 “mysql-connector-java”
- 当 SpringBoot 是 2.1.x.R
七墨博客 ELEASE 及以上版本时,默认使用的是 8.0.13 版本的 “mysql-connector-java”
几个 JDBC 驱动版本的对比
5.1.**版本
- 建议使用
https://qimok.cn - 长期维护更新的版本,最新一版是
Jul, 2019
维护的5.1.48
版本 - 对应
mysql
版本5.6
、5.7
、8.0
都可以放心使用
6.0.**版本
- 禁止使用
- 只有几个 release 版本,没有安全感,已经有一段时间不维护
- 与
5.1.**
存在一些兼容性的问题
8.0.**版本
- 酌情使用
- 尚未经过验证,该版本主要为了兼容
MySQL8.0
- 更新十分频繁
- 需要
JDK8以上
解决
由于这是自己做的一个 demo 项目,当然是怎么方便怎么来,故将 SpringBoot 的版本降级到 2.0.3.RELEASE,问题解决。