大家好,这里是睿智的仓鼠。
注意,这篇文章使用原始的导入jar包操作,没有使用Maven管理。但是在Maven中解决问题的思路也是一致的。
报错信息
先来看错误信息:
警告: Cannot resolve com.mysq.jdbc.Connection.ping method. Will use 'SELECT 1' instead.
java.lang.NullPointerException
连接池的getConnection()方法报错,错误类型是空指针异常。
解决方法
解决这个问题的方法是,检查你的druid版本与mysql-connector数据库驱动版本是否兼容
。
出现这个问题时,我使用的版本是:
- IDEA 2021.2
- druid-1.0.9
- mysql-connector-java-8.0.26
进入Druid的Maven仓库查看兼容信息:
仓库地址:https://mvnrepository.com/artifact/com.alibaba/druid
我的Druid版本是1.0.9,在Maven仓库中我找到了1.1.0的版本,它是2017年的产物,也非常古老了。
找到你当前的版本,点击进入,下拉查看依赖情况。
其中,version 是编译时依赖项的版本号,updates 是依赖项的最新版本号。
项目中推荐使用version列所给的版本号。如果使用最新的依赖项,可能会产生兼容性问题
。
可以看到,druid1.1.0的版本,编译时的MySQL驱动版本只是5.1.39,这已经说明问题了。
经过查证,在mysql-connector5.1.49之前,不存在cj包,而在mysql-connector6及以后的版本就有了。所以,在mysql-connector5.1.49之前编译的Druid,不支持mysql-connector6之后的版本。
可见,这个错误是由于Druid的版本过低导致的。重新下载更高版本的Druid jar包,配置进项目即可。尝试更换druid-1.1.22,顺利解决报错。