当前位置:编程学习 > JAVA >>

hibernate,mysql数据库,连接正常,可是数个操作后出现Cannot open connection,貌似是连接数太多,求解

<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<!-- 数据库连接的名字,有点别称的意思,只是作为备注或者标识的属性 -->
<property name="myeclipse.connection.profile">MySQL</property>
<!--c3p0连接池的最大连接数-->
<property name="hibernate.c3p0.max_size">50</property>
<!--c3p0连接池的最小连接数-->
<property name="hibernate.c3p0.min_size">1</property>
<!--c3p0连接池连接的超时时长如果空闲连接的空闲超过了timeout,就会删除-->
<property name="hibernate.c3p0.timeout">1800</property>
<!--c3p0缓存Statement的数量数-->
<property name="hibernate.c3p0.max_statements">50</property>
<!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒-->
<property name="hibernate.c3p0.idle_test_period">120</property>
<!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 -->
<property name="hibernate.c3p0.acquire_increment">2</property>
以上是连接池信息,
org.hibernate.exception.GenericJDBCException: Cannot open connection
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.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:78)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 24 more
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source

我每次都关闭了session。(session.close()),难道是数据库没关闭,求高人点解啊? --------------------编程问答-------------------- 一般是数据库连接参数或者URL或者用户密码啥的配置错误,导致无法获取数据库连接。请检查下配置文件中关于数据库连接的部分,或者把它贴出来。 --------------------编程问答--------------------
引用 1 楼  的回复:
一般是数据库连接参数或者URL或者用户密码啥的配置错误,导致无法获取数据库连接。请检查下配置文件中关于数据库连接的部分,或者把它贴出来。

数据库连接参数和密码是没有问题的,因为一开始进行数据库操作是没有问题的,只是操作多了,以后就出现这样的问题,我用其他数据库工具也无法打开mysql,说是too many connections。我用的是hibernate  C3p0连接池。前面我已经给出连接的信息了。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 哥们,我现在跟你遇到了同一个问题,你是怎么解决的,麻烦给我说下,我的QQ 617628097 --------------------编程问答-------------------- 把最小链接数和最大连接数都调大点试试,我当初用c3p0池的时候,出现过类似情况 --------------------编程问答-------------------- 用连接池就别关session --------------------编程问答-------------------- 既然你连接没问题,开始使用也没有,估计就是容量问题了,
把连接数调大点
小了可能是数据溢出 --------------------编程问答--------------------   这个问题解决办法:
1:连接数调大点
2:你的连接用完了没关闭,,
  一般都是第2个问题导致的,,检查你的代码!!

--------------------编程问答-------------------- 用另外的客户端连上MySQL。然后用show processlist观察一下有多少个session以及session的状态和当前执行的任务。
如果有很多idle的session,可能是你连接池没配置好。
如果有很多没执行玩得语句,可能是你程序问题。

如果执行一段时间后,mysql客户端都连不上的话,
建议先用客户端连上mysql,然后再运行程序。这样还可以观察程序运行后的链接增长情况。

我记得c3p0有一个属性是检查链接有效性的,设为select 1 即可
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,