使用druid連接池報錯:java.lang.NullPointerException com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1105)


1.今天在maven項目中按照往常使用druid連接池,在注冊界面點擊注冊后發現報錯:

 

 2.於是打開registUserServlet,發現報錯信息如下:

 

 3.打開自己的druid.properties,配置如下:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///travel
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000

4.跟自己之前的配置進行了一下對比,發現url少了一部分,於是添加上去:

url=jdbc:mysql:///travel?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

5.仍然報錯,接着看到網上的方法:

dataSource.driverClassName=com.mysql.cj.jdbc.Driver
dataSource.validationQuery=select 1 dataSource.testOnBorrow=true dataSource.testWhileIdle=true

於是在我的drui.properties加入這些參數:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///travel?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
username=root password=root initialSize=5 maxActive=10 maxWait=3000 validationQuery=select 1 testOnBorrow=true testWhileIdle=true

 6.再次嘗試發現仍然是相同的錯誤,於是去查看是否是自己的依賴jar包有錯,不知道是不是mysql8.0要匹配相應版本的mysql-connector-java.jar,於是將5.6.1換成了8.0.15版本的,檢查之后發現沒有錯誤。

 7.因為之前一直搞不明白com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver的區別,於是去網上查了一下:

com.mysql.jdbc.Driver 是 mysql-connector-java 5及5之前的,

com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6及6之后的的。

這里我的版本是5之后,所以加入了cj。問題解決了!!!根本原因就是mysql8.0與mysql-connector-java.jar版本一定要匹配!!!務必牢記!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM