ERROR 1105 (HY000): runtime error: index out of range [1] with length 1

需要确认两个事情
1、m1.b中是否有不能转换为日期的数据
2、m1.amount中是否有不能转换为数值的数据
3、grouby by 1,2 是否是group by m1.b,m1.a?文中是否写错了?这点很重要。

3.没有写错,1,2应该都没有,公司有点活,稍后我忙完确定下,语句在mysql可以正常执行,

执行计划如下,目前不是很着急
±-----------------------------------±--------±----------±-------------------------------------±---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | estRows | task | access object | operator info |
±-----------------------------------±--------±----------±-------------------------------------±---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Projection_7 | 137.60 | root | | zzz_test.test_1.b, zzz_test.test_1.a, Column#9 |
| └─HashAgg_8 | 137.60 | root | | group by:Column#18, Column#19, funcs:sum(Column#15)->Column#9, funcs:firstrow(Column#16)->zzz_test.test_1.a, funcs:firstrow(Column#17)->zzz_test.test_1.b |
| └─Projection_27 | 4240.07 | root | | cast(zzz_test.test_1.amount, double BINARY)->Column#15, zzz_test.test_1.a, zzz_test.test_1.b, zzz_test.test_1.b, zzz_test.test_1.a |
| └─IndexHashJoin_13 | 4240.07 | root | | left outer join, inner:IndexReader_10, outer key:zzz_test.test_1.a, Column#10, inner key:zzz_test.test_2.a, zzz_test.test_2.b, equal cond:eq(Column#10, zzz_test.test_2.b), eq(zzz_test.test_1.a, zzz_test.test_2.a) |
| ├─Projection_20(Build) | 172.00 | root | | zzz_test.test_1.a, zzz_test.test_1.amount, zzz_test.test_1.b, date(cast(zzz_test.test_1.b, datetime(6) BINARY))->Column#10 |
| │ └─TableReader_22 | 172.00 | root | | data:TableFullScan_21 |
| │ └─TableFullScan_21 | 172.00 | cop[tikv] | table:m1 | keep order:false, stats:pseudo |
| └─IndexReader_10(Probe) | 24.65 | root | | index:IndexRangeScan_9 |
| └─IndexRangeScan_9 | 24.65 | cop[tikv] | table:m2, index:uni_idx_bac(b, a, c) | range: decided by [eq(zzz_test.test_2.b, Column#10) eq(zzz_test.test_2.a, zzz_test.test_1.a)], keep order:false |
±-----------------------------------±--------±----------±-------------------------------------±---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
9 rows in set (0.31 sec)

我确定了,1,2都没有问题

改成group by m1.b,m1.a应该就不报错了,只是不知道业务逻辑是否正确

依照我的数据,改成这样依然会报错,不过我的数据没法拿出来,我又一直没有模拟出数据来

可以看一下 feedback-probability 吗

这个我没有做配置,应该就是默认值,我之前看过论坛里涉及到feedback的问题,和我这个相似,但应该不是一个报错

这个feedback 不管是不是这个原因,建议找个时间关闭一下

我是v5.0.1,默认就是关闭的吧

嗯,新版本默认是关闭,升上来会保持原值,只要保证关闭了,那就:ok_hand:

嗯,这点是确认的,我是新建的集群

这类问题属于产品问题,由于目前咱们版本已经属于最新版本,当前建议使用其他方式来绕过此问题,针对该问题,已在 github 上有对应的 issue了,后续可以根据这个 issue 查看该问题动态:https://github.com/pingcap/tidb/issues/24717
1、绕过办法:在咱们错误栈中,提到 “[index_lookup_join.go:452] ”,所以可以通过 使用 hint 的方式,走其他关联方式来绕过这个错误(具体使用什么hint,需要咱们根据咱们的实际 sql 逻辑选择使用哪个 hint)

好的,我试试吧,感谢,祝越来越好,希望能早日解决sql兼容和内存回收问题,目前生产使用的话这两个方面影响比较大

:grin:感谢反馈

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。