解决C3P0连接中Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool

在使用C3P0连接时出现问题
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source. at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319) at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557) at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525) ... 29 more

今天在写前后端分离案例时,tomcat启动半天一直加载不出来,也不报错也不成功,后来出现了很多乱七八糟的问题,尝试了一下了两下三下,把out删除,重启idea,,,,代码逻辑也没问题,百度了半天,后来检查一遍又一遍代码,该注释的注释,还是不行,终于一个错误引起了我的注意,在这里插入图片描述结果,但是犯了一个低级错误。。。。。就是数据库的url的端口号给搞错了,正确的应该是
jdbc:mysql://localhost:3306/sms

但是由于连接的是本地的习惯于用

<property name="jdbcUrl">jdbc:mysql:///sms

然后手残补全后给弄成

这个是错误的
<property name="jdbcUrl">jdbc:mysql://localhost:8080/sms</property>

欲哭无泪,希望别再犯这种低级错误,,,,,,

好了,说了那么多,还是回归正题吧,下面说一下这次错误的收获。。。。。

去上网查询一下,这个原因还有很多,解决办法总结如下:

1)驱动配置是否有误:driver=com.mysql.jdbc.Driver
2)数据库连接地址是否有误:url=jdbc:mysql://localhost:3306/test
3)密码或帐号是否有误:username=root password=root
(上面三条一般都写在配置文件中,且一般不会写错,但是我把端口号给搞错了) 4)数据库未启动或无权访问
5)项目未引入对应的数据库驱动
6)mysql root没有远程访问的权限,需要增加权限(如果是连接本地localhost数据库则不需要,连接远程数据库才需要),增加权限的步骤如下:
进入mysql数据库: grant all privileges on . to ‘root’@’%’ identified by
‘root’ with grant option; flush privileges;
7)数据库驱动版本的问题:不同mysql版本,对应所需要的驱动版本也不同。

如常用的MySQL 5.7,使用mysql-connector-java-5.x.x-bin.jar。
如果是MySQL 8.0.11,却使用的mysql5的驱动,也会出错,更换MySQL 8对应的驱动就可以了。
MySQL 8使用的driver是com.mysql.cj.jdbc.Driver

发现自己是端口号写错了。。。。。。

你可能感兴趣的:(MySQL)