[转帖]MYSQL JDBC java.sql.SQLException: Out of memory; restart server and try again _Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2289 | 回复: 0   主题: [转帖]MYSQL JDBC java.sql.SQLException: Out of memory; restart server and try again         下一篇 
jrong1987
注册用户
等级:新兵
经验:66
发帖:67
精华:0
注册:2011-12-23
状态:离线
发送短消息息给jrong1987 加好友    发送短消息息给jrong1987 发消息
发表于: IP:您无权察看 2015-1-7 11:36:39 | [全部帖] [楼主帖] 楼主

以前不怎么用MYSQL,前两天在测试使用activiti工作流引擎的时候,使用MYSQL 5.1.X作为后台数据库,工作流引警在执行一条简单的SQL时,报了一条第一印象很奇怪的SQL异常.SQL Message内容为 Out of memory; restart server and try again  . 因为Out of memory这种提示最常见的情景是在OOM异常的情况下,显然这里报的是SQLException而非OOMException.于是乎我就在网上搜了一下,并未找到相关解释。自己也一时也没能想明白,还折腾了好一会儿。后来又仔细看了一下异常堆栈,如下:

Caused by: java.sql.SQLException: Out of memory; restart server and try again (needed 65528 bytes)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1990)
at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1342)
at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:840)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)


    发现最后的那个 needed 65528 bytes 提示,灵光一现,立马查看MYSQL配置信息文件中的相关配置,看看哪个配置项小于64K,查看配置文件的确发现有几项配置小于等于64K,根据实际SQL (select distinct RES.*              from ACT_RE_MODEL RES      WHERE  RES.DEPLOYMENT_ID_ = ?           order by RES.ID_ asc      LIMIT ? OFFSET ?)判断可能是sort_buffer_size这个配置项过小,修改为128K重启数据库后SQL执行就正常。

    后经求证,此配置项在MYSQL5.5.X中默认值为256K。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论