c3p0连接池常用错误解决方案
c3p0连接池常用错误解决方案
c3p0连接池常用错误解决方案不知不觉大三了,又忘记写博客这么久了。
这次写一下最近的有关使用Myeclipse8.0版本去使用c3p0连接池的经验。
本次使用连接池连接数据库弄了一个比较经典的例子,转账;不过这次不是写怎么转账的,相信这个东西随便都能写的出。这次写的是关于在使用过程中遇到的问题,以及解决。
我数据库是mysql8.0. 连接池用的c3p0 0.9.1.2。我没有创建
一般遇到的c3p0-config.xml配置文件。我使用的是Spring的ApplictionXml在这里搭建c3p0.
ApplicationXml配置如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/bank?characterEncoding=utf8&useUnicode=true&useSSL=false&serverTimezone=UTC"></property>
<property name="user" value="root"></property>
<property name="password" value="ysq981204"></property>
</bean>
<bean id="accountDao" class="DaoImpl.AccountDaoImpl">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="accountService" class="service.AccountServiceImpl">
<property name="accountDao" ref="accountDao"></property>
</bean>
配置所需Jar如下(本人jdk1.7)  这里面有一个Jar包是没必要的,mchange-commons-java-0.2.19.jar这个jar包是c3p0的辅助jar包,我之前出问题在网上找的,后面调试后不是这个原因。运行成功后我没测试这个Jar包有没有用。这个Jar包据说是适合mysql8版本配置c3p0连接池的辅助Jar包。 环境搭配好之后就跑一跑程序:  一个很简易的Spring :运行之后就报了如下错误: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database! at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:573) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:868) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:876) at DaoImpl.AccountDaoImpl.outer(AccountDaoImpl.java:12) at service.AccountServiceImpl.transerfer(AccountServiceImpl.java:16) at dao.TT.demo1(TT.java:16) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database! at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106) at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529) at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ... 30 more 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) ... 33 more 意思就是连接不到底层数据库
在网上搜索的解决方法,基本都是如下六条:
1,驱动配置有误:driver=com.mysql.jdbc.Driver
2,数据库连接地址有误:url=jdbc:mysql://localhost:3306/test?3useUnicode=true&characterEncoding=utf8
3,密码或帐号有误:username=root
password=root
4,数据库未启动或无权访问
5,项目未引入对应的驱动jar包mysql-connector-java-5.1.6-bin.jar
6,mysql root没有远程访问的权限,需要增加权限,增加权限的步骤如下:
进入mysql数据库:
grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
flush privileges;
但是按照上述方法,仍旧无法解决,最后发现是由于连接的数据库版本是8.0.16 .最后请教了大牛一点点调试才找到原因。我之前用的连接数据库jar包是5,0.8的jar包,经过测试,一直可以连接数据库,所以一开始没想过这问题,也嫌更换jar包之后其他的配置也要升级麻烦就没管。这次使用c3p0就不行了,所以我换了8.0.18的mysql-connetor版本的Jar包,然后还是报错,这次错误找出来发现是我自己的jdk7带不起来,找人发了个jdk1.8的给我,然后将项目里面的jdk7环境移除了,换成了8.。之后叮~运行成功
这里输出控制台只是方便调试看执行到底没有,懒得去Mysql看表了。当然mysql里面是肯定两个账户转账成功了的.
最后建议大家在运行程序的时候添加日记文件哦,这样调试起来错误一目了然,也方便别人帮你,省时省力。我这次就没添加日记,搞了好几个小时。
c3p0连接池常用错误解决方案相关教程
-
十(7)rsync介绍常用选项通过ssh同步通过服务同步linux系统日志
十(7)rsync:介绍、常用选项、通过ssh同步、通过服务同步、linux系统日志、screen... rsync工具介绍 rsync:数据备份工具(remote sync)。 rsync不仅可以远程同步数据(类似scp),而且可以本地同步数据(类似cp),但是不同于cp或scp的一点是, 如果数据存
-
SpringBoot中使用 Druid 数据库连接池, 后台SQL监控无效
SpringBoot中使用 Druid 数据库连接池, 后台SQL监控无效 环境 SpringBoot: 2.3.4.RELEASE druid-spring-boot-starter: 1.1.22 配置 yaml文件配置 datasource: url: jdbc:mysql://localhost:3306/testdb username: root password: root driver-class-name: com
-
LVS之DR模式原理与实践
LVS之DR模式原理与实践 LVS常用的工作模式有DR、TUN、NAT、FULLNAT,其中DR模式的转发性能最好,但组网要求最为苛刻。本文将试着分析LVS DR模式原理,举例实际配置方式。 LVS DR模式组网 DR模式的组网要求LVS和Real server在同一网段二层互通。因为LVS DR模式
-
plsql连接远程服务器Oracle的配置
plsql连接远程服务器Oracle的配置 直接说最终操作,直接用Oracle Net Manager的“服务命名”和 “监听程序”来配置 服务命名对应的文件是tnsnames.ora , 监听程序对应的文件是listener.ora 。填写上对应的信息后,点左上角 文件 - 保存即可。 与其对应还有个
-
tomcat7数据库连接池与log4jdbc的配置与试用
tomcat7数据库连接池与log4jdbc的配置与试用 为什么80%的码农都做不了架构师? 博文介绍 刚刚有阅读了一遍江南白衣的springside选型文档https://github.com/springside/springside4/wiki/Design 发现其中谈到了Log4jdbc这个日志组件 随后,访问了log4jdbc的官
-
双向链表常用操作的代码实现
双向链表常用操作的代码实现 双向链表常用操作的代码实现 双链表的常用操作:创建、遍历、插入、删除、判断等 双链表的常用操作:创建、遍历、插入、删除、判断等 部分运行效果图片: 完整的代码片段 . /************************************************双链
-
PyTorch之Tensor常用操作
PyTorch之Tensor常用操作 PyTorch之Tensor常用操作 注:主要内容是翻译自PyTorch的官方API文档,再加上一些自己的理解。 view(*shape) → Tensor 返回的是一个有着相同数据但形状不同的Tensor。 对于一个viewed的tensor,新的view size 必须与原始的size和str
-
Git常用知识
Git常用知识 git基础 git init//去本地项目目录中建仓git clone url//复制远程的项目到本地目录中 上图把项目文件状态分为:未跟踪和已跟踪;已跟踪的文件有三种情况:未修改、已修改、放入暂存区 查看当前文件状态: git status 跟踪文件(未跟踪–已跟踪) 放