Last packet sent to the server was 0 ms ago.
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2563)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
  at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2988)
        at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:4913)
        at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:756)
        at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:37)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
        ... 10 more
org.hibernate.exception.JDBCConnectionException: Cannot open connection
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
        at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
        at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
        at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
        at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
        at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
        at com.web.dao.hibernate.Hibernate3Dao.updateWT(Hibernate3Dao.java:242)
        at com.web.dao.ContentDao.update(ContentDao.java:121)
        at com.web.util.DaoUtil.update(DaoUtil.java:169)
        at com.casinview.util.TelnetUtil$1.run(TelnetUtil.java:74)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

解决方案 »

  1.   

    Last packet sent to the server was 487 ms ago.
            at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2563)
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2862)
            at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
            at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
            at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
            at com.mysql.jdbc.Connection.execSQL(Connection.java:2988)
            at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:4913)
            at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:756)
            at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:37)
            at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
            ... 10 more
    org.hibernate.exception.GenericJDBCException: Cannot open connection
            at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
            at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
            at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
            at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
            at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
            at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
            at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
            at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
            at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
            at com.web.dao.hibernate.Hibernate3Dao.updateWT(Hibernate3Dao.java:242)
            at com.web.dao.ContentDao.update(ContentDao.java:121)
            at com.web.util.DaoUtil.update(DaoUtil.java:169)
            at com.casinview.util.TelnetUtil$1.run(TelnetUtil.java:66)
            at java.util.TimerThread.mainLoop(Timer.java:512)
            at java.util.TimerThread.run(Timer.java:462)
    Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
            at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:104)
            at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:236)
            at com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.java:94)
            at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:35)
            at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
            ... 10 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.awaitAcquire(BasicResourcePool.java:970)
            at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:208)
            at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:232)
            ... 13 more
    org.hibernate.exception.GenericJDBCException: Cannot open connection
            at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
            at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
            at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
            at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
            at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
     at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
            at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:420)
            at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
            at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
            at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
            at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
            at com.web.dao.hibernate.Hibernate3Dao.updateWT(Hibernate3Dao.java:242)
            at com.web.dao.ContentDao.update(ContentDao.java:121)
            at com.web.util.DaoUtil.update(DaoUtil.java:169)
            at com.casinview.util.TelnetUtil$1.run(TelnetUtil.java:66)
            at java.util.TimerThread.mainLoop(Timer.java:512)
            at java.util.TimerThread.run(Timer.java:462)
    Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
            at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:104)
            at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:236)
            at com.mchange.v2.c3p0.PoolBackedDataSource.getConnection(PoolBackedDataSource.java:94)
            at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:35)
            at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
            ... 10 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.awaitAcquire(BasicResourcePool.java:970)
            at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:208)
            at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:232)
            ... 13 more
      

  2.   

    有人这么说:
    Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。解决的方法有3种:增加wait_timeout的时间。 
    减少Connection pools中connection的lifetime。 
    测试Connection pools中connection的有效性。 
    当然最好的办法是同时综合使用上述3种方法,下面就DBCP和C3P0分别做一说明,假设wait_timeout为默认的8小时有人说:
    autoReconnect=true 在新的connector/J版本里面已经deprecated了,文档里面建议不要使用但是我的程序里有定时器,每两分钟就操作数据库,所以connection空闲8小时不可能,除非我这个定时器出问题了。但是定时器出问题在哪里啊
      

  3.   

    你的连接数据库既用c3p0又用dbcp的配置,到底用那个呢,这个很危险,很混乱,
      

  4.   

    考虑1下是不是连接池有connection上限或者有没有关的connection
      

  5.   

    connection都关了,也把dbcp配置都去了,只有再等几个月看行不行了