CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory

如果你也遇到了这个错误,希望你画两分钟时间看完这篇博客。说不定对你解决错误有帮助。

错误

今天在使用c3p0连接池连接数据库时遇到了错误遇到这样一个问题,执行方法的方法的时候特别慢,最后还报了一大堆错误,以下是报错信息截图。

在这里插入图片描述
主要错误是:
CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory

错误分析

首先检查配置文件是不是放错位置了,发现配置文件就是在src/main/resources下面,又怀疑里面的用户名、密码、数据库名是不是写错了,发现也没有。接着又检查是不是引入了驱动,发现正常引入。

既然引入了驱动那是不是版本有问题,修改驱动包版本和数据库版本一致,结果无济于事。下面是我配置数据源的信息:

<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<!-- 连接数据库的信息 -->
   	<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_study?characterEncoding=UTF8"></property>
    <property name="user" value="root"></property>
    <property name="password" value="root"></property>
</bean>

在这里插入图片描述
最后修改url,在后面加了下面的代码,惊奇的发现解决了问题。

?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC&amp;characterEncoding=UTF8

在这里插入图片描述

总结解决办法

(1)书写配置文件的时候要特别细心,如果多一个空格也有可能报错。注意:name 必须是小写,jdbcUrl的U必须大写

(2)项目未引入对应的驱动jar包 mysql-connector-java-xxx-bin.jar

(3)驱动配置有误,应该是 com.mysql.jdbc.Driver

(4)数据库连接地址有误,应该是 jdbc:mysql://localhost:3306/spring_study?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=UTF8(这里我以我的项目为准,仅供参考)

(5)数据库密码或帐号有误

(6)配置文件没有放到src的根目录下

(7)驱动包和自己电脑安装的mysql版本不一致(这个也有可能会报错)

(8)网上说的数据库未启动或无权访问这个一般不会出现

发布了81 篇原创文章 · 获赞 1443 · 访问量 20万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 鲸 设计师: meimeiellie

分享到微信朋友圈

×

扫一扫,手机浏览