栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

服务器Connections could not be acquired from the underlying database错误

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

服务器Connections could not be acquired from the underlying database错误

        在写一个ssm框架的demo中,在spring整合mybatis后开始运行时,服务器出现了一个报错:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
### The error may exist in cn/itcast/dao/AccountDao.java (best guess)
### The error may involve cn.itcast.dao.AccountDao.findAll
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:986)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

错误:Connections could not be acquired from the underlying database。

       看样子是不能连接数据库的错误,为了定位错误原因,我尝试使用单元测试去取数据库数据,发现单元测试可以取到数据,又用DBeaver与数据库做连接,发现DBeaver也可以连接的到本地MySQL8.0数据库。有点不明白了,百度上添加数据库url的时区和编码方式不奏效。开始分析这个Connections could not be acquired from the underlying database错误,首先,这个错误不是密码时区之类错误引起的,所以添加时区的做法并不奏效,其次,单元测试时可以拿到数据,说明url应该没问题,毕竟有方法可以连接上数据库,最后,在断点时,每当走入dao层时就会出现报错。从这些现象上看应该是项目中对数据库的配置有问题。于是开始检查与数据库连接有关的配置,检查了数据库连接池C3P0和驱动依赖jar包mysql-connector-java。C3P0是最新版本,没有问题。但是驱动依赖mysql-connector-java是5.1.6版本的,而我用的是8.0版本的数据库,是不是这个5版本的驱动与8版本的mysql不匹配呢?换用了8.0.11版本的mysql-connector-java包后,再次启动,成功拿到数据。

        所以,单元测试可连接,而本地项目不可连接数据库的现象是单元测试和本地用了两套独立的配置文件造成的,如果出现类似错误时,可以检查驱动jar包和数据库版本对应情况。

(ps:偶尔用一下mysql的高版本,安装助手安装起来有点复杂了,不像以前5版本那样解压即用了。)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号