执行mysql查询时获取java.lang.StackOverflowError

时间:2012-05-30 13:31:50

标签: java mysql jdbc

我不时引发这个异常导致我的mysql调用失败。

   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中的相关错误。所以我想这不是我的情况。

这似乎是随机行为,因为对于大多数执行而言没有错误,但它通常每周都会发生。 这可能是由mysql服务器通信故障引起的吗? 欢迎任何想法

1 个答案:

答案 0 :(得分:2)

找到问题的原因。 似乎是由于在mysql服务器中丢弃了空闲连接。 mysql url中的autoReconnect=true为我解决了这个问题。