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

只可惜照着书搭建了一套Web环境,代码和db脚本都是拷贝的光盘里的,也反复检查了数据库的连接情况,Navicat可以正常连,涉及到的两个数据库配置文件里面的url、端口、密码应该都是对的,反复折腾了一晚上没搞定,临了百度一顿乱搜,看到一个帖子(https://www.2cto.com/database/201807/762696.html)里面提到的一句话(最后发现因为我使用的是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" 的引用必须以 ';' 分隔符结尾。”,继续百度,参考https://blog.csdn.net/qq_33811662/article/details/80532721里面有一句话:

在 xml 中 &符号是作为实体字符形式存在的,参考 https://blog.csdn.net/qq_33811662/article/details/80231312,得知要把&改成&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 第一遍随笔,开启我的畜奴农猿狮之路,打破世俗,突破自我。

Could not get JDBC connection的更多相关文章

  1. org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 原因

    org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 可能出现的原因     ...

  2. Jmeter组件7. JDBC Connection Configuration & JDBC Request

    Jmeter同样可以测试数据库的性能,通过执行增删改查的语句,以下举的是oracle的例子 Step 1: 下载ojdbc14.jar包放到Jmeter lib包中,在test plan中配置,并且重 ...

  3. Weblogic常见故障常:JDBC Connection Pools(转)

    WebLogic Server中数据库连接池是一个经常出问题的地方,总结一下出问题的原因和解决办法. 一.数据库连接泄漏 此类问题一般都是由于开发人员没有正确关闭数据库连接造成的.比如使用完Conne ...

  4. 解决Only a type can be imported. com.mysql.jdbc.Connection resolves to a package的报错问题

    写jsp加载数据驱动以后老是提示Only a type can be imported. com.mysql.jdbc.Connection resolves to a package的错误,然而改成 ...

  5. Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException:

    七月 17, 2014 4:56:01 下午 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service( ...

  6. Weblogic常见故障一:JDBC Connection Pools

    最近系统老是出现数据库连接池不够用的问题,由于weblogic数据源里没有配置JDBC连接数,取的是默认值15,太小导致connection耗尽,是不是就报一堆错.后来通过修改WebLogic数据源配 ...

  7. [原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载

    问题: 一. 1. Spring 如何处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSession ? 3. propagati ...

  8. 【错误】:Could not open JDBC Connection for transaction; nested exception is: Communications link failure;The last packet sent successfully to the server was 1 milliseconds ago

    # #错误日志 2016-11-10 16:19:20,834 ERROR [org.quartz.core.JobRunShell] - Job DEFAULT.jobtask threw an u ...

  9. [原理][来源解析]spring于@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关联

    Spring 捆绑Hibernate. 夹: 一.  1. Spring 怎样处理propagation=Propagation.SUPPORTS? 2. Spring 何时生成HibernateSe ...

  10. 转:JMeter 参数化之利用JDBC Connection Configuration从数据库读取数据并关联变量

    1.   下载mysql jar包 下载mysql jar包 http://dev.mysql.com/downloads/connector/j/ 网盘下载地址:mysql-connector-ja ...

随机推荐

  1. JavaScript视频分享,学无止境。

    http://blog.sina.com.cn/s/blog_735ed39a0102voy3.html

  2. 先序遍历DOM树的5种方法

    DOM树由文档中的所有节点(元素节点.文本节点.注释节点等)所构成的一个树结构,DOM树的解析和构建是浏览器要实现的关键功能.既然DOM树是一个树结构,那么我们就可以使用遍历树结构的相关方法来对DOM ...

  3. 实用:Git 中的一些常见错误

    无论是数据科学家.算法工程师还是普通开发人员,在每个团队协作开发任务中,Git 都是必不可少的版本控制工具,因此掌握它的基本操作十分有必要.但即便是教程满天飞的今天,开发人员在使用 Git 时也还是会 ...

  4. 使用redis配置分布式session

    1. spring-redis-session 1.1. 配置 /** * @author laoliangliang * @date 2018/12/21 17:19 */ @Configurati ...

  5. VIM -小技巧汇总

    一 代码自动对齐: 1 命令行模式下先输入gg 然后按=后输入大写的G,这样整个文件的代码就对齐了. 二 选中多行缩进 1.按v进入visual状态,选择多行,用>或<缩进或缩出 2. 通 ...

  6. pm2日志管理pm2-logrotate介绍

    先来看两个问题 问:pm2-logrotate是什么? 答:pm2-logrotate可以理解为是一个pm2的插件,它扩充了pm2本身没有功能:日志管理,所以它的运行需要依靠pm2,想用它必须先安装p ...

  7. io模块及其API

    模块: io io.StringIO io.BytesIO 所包含API列表: io.StringIO.write: 写入字符 io.StringIO.getvalue: 获取写入的字符 io.Str ...

  8. Impl模式实现之注意内联

    最近学习muduo源码时,对于内联函数有了更深刻的认知. 内联(inline)在代码执行方面具有优势,但是有时使用不当,或者稍微不注意,就会造成编译错误. 以下将通过Impl实现说明一二: 头文件: ...

  9. Spark面试题

    RDD怎么理解? RDD 是 Spark 的灵魂,也称为弹性分布式数据集.一个 RDD 代表一个可以被分区的只读数据集.RDD 内部可以有许多分区(partitions),每个分区又拥有大量的记录(r ...

  10. linux 根据端口查看系统进程

    1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 注意不同用户下,查看的进程不同