MyCATApache/Mycat-Server

此版本Mycat-server-1.6.7.6-release.jar不支持MySQL MAX()函数

Open

#2840 aperta il 30 ago 2021

Vedi su GitHub
 (16 commenti) (0 reazioni) (0 assegnatari)Java (3886 fork)batch import
help wanted

Metriche repository

Star
 (9451 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

在Mycat查询后端MySQL某个库的某张表并且根据id使用max()函数计算时,前端返回异常如下---> 2013 - Lost connection to MySQL server during query 使用的版本: Mycat-server-1.6.7.6-release-20210730131311-linux.tar.gz mycat.log日志报错如下:

2021-08-30 15:47:06.575 WARN [$_NIOREACTOR-1-RW] (io.mycat.net.NIOReactor$RW.run(NIOReactor.java:118)) - caught err: java.lang.ArrayIndexOutOfBoundsException: 11 at com.alibaba.druid.sql.parser.SQLExprParser.getAggregateFunction(SQLExprParser.java:2131) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.sql.parser.SQLExprParser.methodRest(SQLExprParser.java:1565) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.sql.parser.SQLExprParser.parseSelectItem(SQLExprParser.java:5553) ~[druid-1.2.6.jar:1.2.6] at io.mycat.route.parser.druid.MycatExprParser.parseSelectItem(MycatExprParser.java:31) ~[Mycat-server-1.6.7.6-release.jar:?] at com.alibaba.druid.sql.parser.SQLSelectParser.parseSelectList(SQLSelectParser.java:982) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.sql.dialect.mysql.parser.MySqlSelectParser.query(MySqlSelectParser.java:239) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.sql.parser.SQLSelectParser.query(SQLSelectParser.java:378) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.sql.parser.SQLSelectParser.select(SQLSelectParser.java:61) ~[druid-1.2.6.jar:1.2.6] at io.mycat.route.parser.druid.MycatStatementParser.parseSelect(MycatStatementParser.java:39) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.route.parser.druid.MycatStatementParser.parseSelect(MycatStatementParser.java:15) ~[Mycat-server-1.6.7.6-release.jar:?] at com.alibaba.druid.sql.parser.SQLStatementParser.parseStatement(SQLStatementParser.java:4518) ~[druid-1.2.6.jar:1.2.6] at io.mycat.server.util.SchemaUtil.parseSchema(SchemaUtil.java:24) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.server.ServerConnection.execute(ServerConnection.java:275) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.server.handler.SelectHandler.handle(SelectHandler.java:129) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.server.ServerQueryHandler.query(ServerQueryHandler.java:95) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.FrontendConnection.query(FrontendConnection.java:397) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.FrontendConnection.query(FrontendConnection.java:417) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.handler.FrontendCommandHandler.handle(FrontendCommandHandler.java:76) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.FrontendConnection.rawHandle(FrontendConnection.java:591) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.FrontendConnection.handle(FrontendConnection.java:573) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.AbstractConnection.onReadData(AbstractConnection.java:338) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.NIOSocketWR.asynRead(NIOSocketWR.java:216) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.AbstractConnection.asynRead(AbstractConnection.java:290) ~[Mycat-server-1.6.7.6-release.jar:?] at io.mycat.net.NIOReactor$RW.run(NIOReactor.java:113) [Mycat-server-1.6.7.6-release.jar:?] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162] 2021-08-30 15:47:06.579 INFO [$_NIOREACTOR-1-RW] (io.mycat.net.AbstractConnection.close(AbstractConnection.java:531)) - close connection,reason:program err:java.lang.ArrayIndexOutOfBoundsException: 11 ,ServerConnection [id=3, schema=ali_cloud, host=10.10.81.249, user=mycat_user,txIsolation=3, autocommit=true, schema=ali_cloud, executeSql=SELECT a.*, sum( CASE WHEN t_area_reruns.status = 0 THEN ifnull( t_area_reruns_detial.reruns_number, 0 ) ELSE 0 END ) AS rerunsNumber, sum( CASE WHEN t_area_reruns.status = 0 THEN ifnull( t_area_reruns_detial.reruns_weight, 0 ) ELSE 0 END ) AS rerunsWeight, max( CASE WHEN t_area_reruns.status = 0 THEN ifnull( t_area_reruns_detial.if_check_reruns, 0 ) ELSE 0 END ) AS ifCheckreruns, sum( ifnull( t_reces_detial_rewords.rewirks_num, 0 ) ) AS rewirksNum, sum( ifnull( t_reces_detial_rewords.rewirks_weight, 0 ) ) AS rewirksWeight, sum( ifnull( t_reces_detial_rewords.no_rewirks_num, 0 ) ) AS norewirksNum, sum( ifnull( t_reces_detial_rewords.no_rewirks_weight, 0 ) ) AS norewirksWeight FROM .......

使用的SQL语句 select max(id) from t_area_reruns;

Guida contributor