kxbin
          成功留給有準備的人
          posts - 10,  comments - 35,  trackbacks - 0

          ERROR - No operations allowed after connection closed.
          2011-12-07 11:36:09 - ERROR - query failed
          org.hibernate.exception.JDBCConnectionException: could not execute query
          at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
          at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
          at org.hibernate.loader.Loader.doList(Loader.java:2148)
          at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
          at org.hibernate.loader.Loader.list(Loader.java:2024)
          at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
          at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
          at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
          at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
          at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
          分析,出現(xiàn)這種異常的原因是:
          Mysql服務器默認的“wait_timeout”是8小時,也就是說一個connection空閑超過8個小時,Mysql將自動斷開該connection。這就是問題的所在,在C3P0 pools中的connections如果空閑超過8小時,mysql將其斷開,而C3P0并不知道該connection已經(jīng)失效,如果這時有Client請求connection,C3P0將該失效的Connection提供給Client,將會造成上面的異常。
          a)解決的方法有3種:
              增加wait_timeout的時間。
              減少Connection pools中connection的lifetime。
              測試Connection pools中connection的有效性。
          b)具體解決方案:
             1、換一下JDBC驅(qū)動,JDBC3.1.0-alpha及以前版本會出現(xiàn)此問題,下載新的JDBC驅(qū)動
            2、使用hibernate配置:
          使用hibernate: 
          <property name="connection.autoReconnect">true</property>  <!--這個是最主要的--> 
          <property name="connection.autoReconnectForPools">true</property> 
          <property name="connection.is-connection-validation-required">true</property> 
          加入以上property,可解決此問題,如果未使用hibernate等持久化管理框架,可在mysql的url中加入autoReconnect=true,這樣就可以解決。
          原因很簡單。在對數(shù)據(jù)庫操作結束后關閉連接是正確的做法,沒什么大問題。至于出現(xiàn):No operations allowed after connection closed。這樣的問題原因只有一個,你這里和數(shù)據(jù)庫的連接Connection是一個Static的,程序共享這一個Connection。所以第一次對數(shù)據(jù)庫操作沒問題,當把Connection關閉后,第二次還想操作數(shù)據(jù)庫時Connection肯定不存在了。
          posted on 2011-12-07 16:24 kxbin 閱讀(18796) 評論(0)  編輯  收藏 所屬分類: MYSQL
          你恨一個人是因為你愛他;你喜歡一個人,是因為他身上有你沒有的;你討厭一個人是因為他身上有你有的東西;你經(jīng)常在別人面前批評某人,其實潛意識中是想接近他。

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(5)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          J2EE

          java技術網(wǎng)站

          Linux

          平時常去的網(wǎng)站

          數(shù)據(jù)庫

          電影網(wǎng)站

          網(wǎng)站設計

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 广德县| 特克斯县| 玉屏| 渭南市| 赤峰市| 二连浩特市| 江安县| 宜春市| 松阳县| 久治县| 从江县| 鄄城县| 云林县| 衡东县| 高碑店市| 北碚区| 同心县| 孝昌县| 湛江市| 弥勒县| 达州市| 红原县| 苍梧县| 广宁县| 温州市| 额济纳旗| 鄂尔多斯市| 东台市| 台中县| 土默特左旗| 浑源县| 双流县| 曲周县| 安塞县| 沅江市| 通州市| 天气| 江西省| 南澳县| 万年县| 彭州市|