Caused by: java.sql.SQLException: Out of memory; restart server and try again (needed 142328 bytes)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1124)
at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:676)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1030)
at sun.reflect.GeneratedMethodAccessor103.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)
at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)
at $java.sql.Wrapper$$EnhancerByProxool$$b0af1903.executeQuery(<generated>)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
... 42 more
上面报错是hql在查询mysql的时候报的一个错误,起初第一感觉以为是服务内存或者数据库存储内存的问题,后面想想这不合理,看了sql之后有了就差不多明了了。经过几次调试:
查询语句1:SELECT DISTINCT product FROM Product as product WHERE 1=1 AND product.isconfig !=1 ORDER BY product.CREATE_TIME DESC ---报错
查询语句2:SELECT DISTINCT product FROM Product as product WHERE 1=1 AND product.isconfig !=1 ---通过
查询语句3:SELECT DISTINCT product FROM Product as product WHERE 1=1 ORDER BY product.CREATE_TIME DESC ---报错
查询语句4:FROM Product as product WHERE 1=1 AND product.isconfig !=1 ORDER BY product.CREATE_TIME DESC ---通过
查询语句5:SELECT DISTINCT product.id FROM Product as product WHERE 1=1 AND product.isconfig !=1 ORDER BY product.CREATE_TIME DESC ---通过
处理过程:
同一代码下在mysql 5.0.24a以下版本的环境上存在该问题;
同一代码下在mysql5.5.02以上版本没发现该问题(嘿嘿5.0.24a~mysql5.5.02中间版本的没试哈)
结论:district对象和order by在mysql5.0.24a以下版本的环境上一起用是有问题的。
解决方式:
1、升级mysql数据库,这个最快捷也是比较有远见的方法,而且不需要改代码,哈哈;
2、修改查询语句:查询id在SELECT DISTINCT product.id FROM ...中的数据即可。
另外:不要以为SELECT DISTINCT product.id,product FROM Product as product WHERE 1=1 AND product.isconfig !=1 ORDER BY product.CREATE_TIME DESC 这样就可以,然后再用object来取再转对象。嘿嘿,经测试也是不可行的。