1
我有時會引發這個異常,導致我的mysql調用失敗。執行mysql查詢時獲取java.lang.StackOverflowError
Caused by: java.lang.StackOverflowError
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3251)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1932)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4916)
.....
我正在使用mysql jdbc 5.1.7和c3p0。 JVM正在linux 64服務器中運行。 我在3.0.8版本中修復了mysql jdbc 3.0.7中的一個相關bug。所以我想這不是我的情況。
這似乎是隨機的行爲,因爲大多數執行沒有錯誤,但它通常每週都會發生。 這可能是由於mysql服務器通信失敗造成的嗎? 歡迎任何想法
看起來像驅動程序庫中的一些錯誤! – Santosh
@Santosh不一定,特別是因爲stackoverflow發生在java.net類中:如果這個調用有一個非常深的調用堆棧,那麼頂部調用可能只是溢出桶(堆棧)的那個drop。那或者調用代碼;這不在堆棧跟蹤中會出錯,並導致堆棧溢出。 –
顯示更深的堆棧跟蹤或導致此錯誤的實際代碼StackOverflowError –