MySQLSyntaxErrorException: In aggregated query without GROUP BY,this is incompatible with sql_mode=only_full_group_by
报错信息
[FlowName=com.primeton.esb.ciec_http2jms.restaurant.ms.http2jms.mediaService.mediaService.biz][activity name=验重][activity id=invokePojo3][exception=com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'esb8.sam_check_repeat.id'; this is incompatible with sql_mode=only_full_group_by]
[default][2022-08-22 14:14:06,116][ERROR][com.primeton.esb.mediation.exception.ExceptionMessageUtil:57] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'esb8.sam_check_repeat.id'; this is incompatible with sql_mode=only_full_group_by
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1915)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2023)
at com.primeton.esb.ciec_http2jms.Repeat.repeat(Repeat.java:78)
at com.primeton.esb.ciec_http2jms.restaurant.ms.http2jms.mediaService.mediaService_biz.invokePojo3(mediaService_biz.java:351)
at com.primeton.esb.ciec_http2jms.restaurant.ms.http2jms.mediaService.mediaService_biz.__choiceinvokePojo3(mediaService_biz.java:692)
at com.primeton.esb.ciec_http2jms.restaurant.ms.http2jms.mediaService.mediaService_biz.__invokeBiz(mediaService_biz.java:581)
at com.primeton.esb.ciec_http2jms.restaurant.ms.http2jms.mediaService.mediaService_biz._invoke(mediaService_biz.java:480)
at com.primeton.esb.ciec_http2jms.restaurant.ms.http2jms.mediaService.mediaService_biz.invoke(mediaService_biz.java:524)
at com.primeton.engine.core.impl.process.BLProxy.asynInvoke(BLProxy.java:465)
at com.primeton.engine.component.impl.OperationAccessor.invoke(OperationAccessor.java:228)
at com.primeton.ext.engine.component.OperationAsyn.asynInvoke(OperationAsyn.java:33)
at com.primeton.engine.component.impl.LogicCompoment.invokeAsyn(LogicCompoment.java:270)
at com.primeton.access.client.impl.skeleton.BizLogicReceiveTarget.invoke(BizLogicReceiveTarget.java:64)
at com.primeton.access.client.impl.skeleton.ServiceEngine.receive(ServiceEngine.java:36)
at com.primeton.access.client.impl.skeleton.DefaultServiceSkeleton.invokeService(DefaultServiceSkeleton.java:130)
at com.primeton.access.client.impl.skeleton.DefaultServiceSkeleton.invoke(DefaultServiceSkeleton.java:32)
at com.primeton.access.client.impl.ClientMessageInterceptor.invoke(ClientMessageInterceptor.java:57)
at com.primeton.system.aop.impl.HandlerInvoker.invoke(HandlerInvoker.java:60)
at com.primeton.system.aop.impl.JdkProxyUtil$JdkInvocationHandlerWrapper.invoke(JdkProxyUtil.java:53)
at com.sun.proxy.$Proxy172.invokeAsyn(Unknown Source)
at com.primeton.esb.mediation.model.MediationService.invokeLogicFlow(MediationService.java:142)
at com.primeton.esb.mediation.model.MediationService.messageRequest(MediationService.java:119)
at com.primeton.esb.mediation.model.MediationService$Media_RequestHandler.handleMessage(MediationService.java:250)
at com.primeton.tip.org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:104)
at com.primeton.tip.org.springframework.integration.dispatcher.UnicastingDispatcher.access$000(UnicastingDispatcher.java:47)
at com.primeton.tip.org.springframework.integration.dispatcher.UnicastingDispatcher$1.run(UnicastingDispatcher.java:86)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
解决方案
select查询中使用的聚合函数如count(1),同时将多余的字段也放在查询中了,导致mysql弄不清聚合函数和字段的分组关系。
①去除多余字段
②去除聚合函数
③将字段放入分组group by中