欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Could not get JDBC connection

程序员文章站 2022-04-09 17:37:10
想学习下JavaWeb,手头有2017年有活动的时候买的一本书,还是全彩的,应该很适合我这种菜鸟技术渣。 只可惜照着书搭建了一套Web环境,代码和db脚本都是拷贝的光盘里的,也反复检查了数据库的连接情况,Navicat可以正常连,涉及到的两个数据库配置文件里面的url、端口、密码应该都是对的,反复折 ......

想学习下javaweb,手头有2017年有活动的时候买的一本书,还是全彩的,应该很适合我这种菜鸟技术渣。

只可惜照着书搭建了一套web环境,代码和db脚本都是拷贝的光盘里的,也反复检查了数据库的连接情况,navicat可以正常连,涉及到的两个数据库配置文件里面的url、端口、密码应该都是对的,反复折腾了一晚上没搞定,临了百度一顿乱搜,看到一个帖子()里面提到的一句话(最后发现因为我使用的是mysql8.0,mysql-connector-java-5.1.28-bin.jar的驱动需要升级,于是我升级到了mysql-connector-java-8.0.11-bin.jar.),感觉有戏,因为我本地装的mysql也是8的,只是已经2点多了,吃不消赶紧睡了,第二天再看吧。报错日志:

### cause: org.springframework.jdbc.cannotgetjdbcconnectionexception: could not get jdbc connection; nested exception is com.alibaba.druid.pool.getconnectiontimeoutexception: wait millis 6002, active 0, maxactive 20] with root cause

java.lang.nullpointerexception

at com.mysql.jdbc.connectionimpl.getservercharacterencoding(connectionimpl.java:3307)

at com.mysql.jdbc..sendconnectionattributes(mysqlio.java:1985)

at com.mysql.jdbc.mysqlio.proceedhandshakewithpluggableauthentication(mysqlio.java:1911)

at com.mysql.jdbc.mysqlio.dohandshake(mysqlio.java:1288)

at com.mysql.jdbc.connectionimpl.coreconnect(connectionimpl.java:2506)

at com.mysql.jdbc.connectionimpl.connectonetryonly(connectionimpl.java:2539)

at com.mysql.jdbc.connectionimpl.createnewio(connectionimpl.java:2321)

at com.mysql.jdbc.connectionimpl.<init>(connectionimpl.java:832)

at com.mysql.jdbc.jdbc4connection.<init>(jdbc4connection.java:46)

at sun.reflect.generatedconstructoraccessor32.newinstance(unknown source)

at sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45)

at java.lang.reflect.constructor.newinstance(constructor.java:423)

at com.mysql.jdbc.util.handlenewinstance(util.java:409)

at com.mysql.jdbc.connectionimpl.getinstance(connectionimpl.java:417)

at com.mysql.jdbc.nonregisteringdriver.connect(nonregisteringdriver.java:344)

at com.alibaba.druid.pool.druidabstractdatasource.createphysicalconnection(druidabstractdatasource.java:1408)

at com.alibaba.druid.pool.druidabstractdatasource.createphysicalconnection(druidabstractdatasource.java:1464)

at com.alibaba.druid.pool.druiddatasource$createconnectionthread.run(druiddatasource.java:1969)

 

第二天了,晚上。开始下配套mysql客户端,打开官网发现有点小慢,所以就同时继续百度搜,发现csdn的都要虚拟币什么的,又不想注册,放弃。

继续搜突然发现个不错的地址http://ftp.ntu.edu.tw/mysql/downloads/connector-j/ 里面各种mysql-connector版本,看地址是宝岛某大学的ftp服务器,就下了个配套的mysql-connector-java-8.0.15.zip,解压了以后放到我工程的对应目录下,其实一开始也不知道要放到哪个目录,就mysql-connector*搜了下才找到旧包路径是webcontent/web-inf/lib/mysql-connector-java-5.1.30.jar,直接改成mysql-connector-java-5.1.30.jar.bak,把mysql-connector-java-8.0.15.jar放过去。

完了还看到说要改driver和url的,mysql8需要的,只好改啊,发现相关的有两个文件jdbc.properties和spring-pz-shiro.xml(登录鉴权模块)

jdbc.properties:
driver=com.mysql.jdbc.driver
url=jdbc:mysql://127.0.0.1:3306/mydb
=>
driver=com.mysql.cj.jdbc.driver
url=jdbc:mysql://127.0.0.1:3306/mydb?usessl=false&servertimezone=utc
sprint-pz-shiro.xml:
<bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname" value="com.mysql.jdbc.driver" /> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb" /> </bean> => <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname" value="com.mysql.cj.jdbc.driver" /> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb?usessl=false&servertimezone=utc" /> </bean>

改完了跑一把,又报个错误 “对实体 "servertimezone" 的引用必须以 ';' 分隔符结尾。”,继续百度,参考里面有一句话:

在 xml 中 &符号是作为实体字符形式存在的,参考 ,得知要把&改成&amp;

<bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource">
        <property name="driverclassname" value="com.mysql.cj.jdbc.driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb?usessl=false&amp;servertimezone=utc" />
</bean>

然后页面就能正常打开不报错了!

 

小结:jdbc connection问题

1、检查数据库连接情况;

2、检查数据源配置情况,比如这里的jdbc.properties和spring-pz-shiro.xml

3、检查数据库客户端服务器版本配套情况,本案例中虽然检查了步骤1和2觉得都正常,最后发现应该说版本不匹配导致,还是要回头改步骤2的配置。

 

2019-04-12 23:50:05 第一遍随笔,开启我的畜奴农猿狮之路,打破世俗,突破自我。