您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Mysql異常No operations allowed after statement closed怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Mysql異常No operations allowed after statement closed怎么解決”吧!
之所以會(huì)出現(xiàn)這個(gè)異常,是因?yàn)镸ysql在5以后針對(duì)超長時(shí)間DB連接做了一個(gè)處理,那就是如果一個(gè)DB連接在無任何操作情況下過了8個(gè)小時(shí)后,Mysql會(huì)自動(dòng)把這個(gè)連接關(guān)閉。所以使用連接池的時(shí)候雖然連接對(duì)象還在但是鏈接數(shù)據(jù)庫的時(shí)候會(huì)一直報(bào)這個(gè)異常。解決方法很簡單在Mysql的官方網(wǎng)站上就可以找到。 有兩個(gè)方法
###第一種是在DB連接字符串后面加一個(gè)參數(shù)。
這樣的話,如果當(dāng)前鏈接因?yàn)槌瑫r(shí)斷掉了,那么驅(qū)動(dòng)程序會(huì)自動(dòng)重新連接數(shù)據(jù)庫。
jdbc:mysql://localhost:3306/makhtutat?autoReconnect=true
不過Mysql并不建議使用這個(gè)方法。因?yàn)榈谝粋€(gè)DB操作失敗的后,第二DB成功前如果出現(xiàn)了重新連接的效果。
conn.createStatement().execute( "UPDATE checking_account SET balance = balance - 1000.00 WHERE customer='Smith'"); conn.createStatement().execute( "UPDATE savings_account SET balance = balance + 1000.00 WHERE customer='Smith'"); conn.commit();
當(dāng)然如果出現(xiàn)了重新連接,一些用戶變量和臨時(shí)表的信息也會(huì)丟失。 ###另一種方法是Mysql推薦的,需要程序員手動(dòng)處理異常。
Connection conn = null; Statement stmt = null; ResultSet rs = null; int retryCount = 5; boolean transactionCompleted = false; do { try { conn = getConnection(); // assume getting this from a // javax.sql.DataSource, or the // java.sql.DriverManager conn.setAutoCommit(false); retryCount = 0; stmt = conn.createStatement(); String query = "SELECT foo FROM bar ORDER BY baz"; rs = stmt.executeQuery(query); while (rs.next()) { } all.close() transactionCompleted = true; } catch (SQLException sqlEx) { String sqlState = sqlEx.getSQLState(); // 這個(gè)08S01就是這個(gè)異常的sql狀態(tài)。單獨(dú)處理手動(dòng)重新鏈接就可以了。 if ("08S01".equals(sqlState) || "40001".equals(sqlState)) { retryCount--; } else { retryCount = 0; } } finally { all close: } } while (!transactionCompleted && (retryCount > 0));} }
到此,相信大家對(duì)“Mysql異常No operations allowed after statement closed怎么解決”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。