今天登录码云,看到4天前有人评论说连不上数据库,具体描述如下 :
本地项目运行后报错,百度后说是mybatis版本与tomcat不兼容,然后把mybatis的版本换成了3.4.4。之后运行项目就一直提示org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!,检查了很多次jdbc的配置,实在找不到问题所在,有遇到我这种情况的么?
用navicat连接本地数据库都是正常的。
看到这个错误信息,第一时间感觉就是数据库信息错了,所以我直接回复问他:在修改mybatis版本在之前是报什么错误呢?
然后叫他检查下jeesns.properties中数据库配置信息是否正确。
我觉得肯定是数据库信息错了,然后就过了。
然后下午我用公司的电脑想运行一下jeesns,修复下xss脚本注入漏洞,可是发现数据库信息都正常,但是就是提示连不上数据库,然后各种百度,无非就2种情况,一是数据库信息错了,二是数据库驱动版本不对。
突然想起来,公司的电脑我安装的mysql版本是比较高的,然后看了下mysql版本,直接搜索mysql8.0 java驱动,发现8.0.11版本的mysql的驱动连接方式不一样,之前我们这边用的是com.mysql.jdbc.Driver,而8.0.11要用com.mysql.cj.jdbc.Driver,此外mysql8.0是不需要建立ssl连接的,所以需要关闭掉,最后需要设置CST。
使用mysql8.0.11版本的话,需要做以下修改。
驱动修改成8.0.11的
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency>
再修改jeesns.properties前面两行为
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/jeesns?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowMultiQueries=true
这样就可以连接数据库了。