日期:2014-05-20  浏览次数:21058 次

hibernate+spring +quartz 数据库连接超过最大连接数
最近碰到报这样的错:Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: User 'comservi_webapp' has exceeded the 'max_user_connections' resource (current value: 10)

是说数据库连接次数已经执行了最大连接数 

看了看项目确实是这样的,在服务器有一个web项目,算一个连接;
然后在另外一个服务器上用quartz定时的调任务,这里配置了9个trigger触发器。加起来就是10。

白天工作的时候,我需要查询数据,连接数据就连不上,报错。

这个问题怎样解决呢?是连接池的需要配更大吗?

下面是spring的配置:
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">//这里配置了close,那么每次连接用完就会关闭的
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property> 
 
<property name="url"
value="jdbc:mysql://localhost/comservi_tractor?useUnicode=true&amp;characterEncoding=iso-8859-1&amp;zeroDateTimeBehavior=convertToNull">
</property> 
<property name="username" value="root"></property>
<property name="password" value="123456"></property> 
</bean>

------解决方案--------------------
建议调整 MySQL 配置文件中 max_user_connections 的值。
------解决方案--------------------
可以在Spring的配置文件applicationContext.xml中配置一下:
XML code

 <!--连接池中保留的最小连接数。-->
        <property name="minPoolSize">
            <value>5</value>
        </property>
 
 <!--连接池中保留的最大连接数。Default: 15 -->
        <property name="maxPoolSize">
            <value>30</value>
        </property>

------解决方案--------------------
destroy-method="close" 不是你说的那个意思。
是说被IoC容器管理的数据库连接池在卸载的时候要调用close方法。

你的问题不像是连接池配置问题啊。 是不是你用jdbc了结果没有关闭啊。

没有关闭的话,用过的连接没有还给连接池。
------解决方案--------------------
quartz 的 job 也是用的 hibernateTemplate吗?