MySQL 出现 String Index out of range: x 的原因
前言
调试代码时遇到一个很奇怪的问题, 对于一个很简单的 sql, 执行时会时不时的报异常 String Index out of range: x
SQL: select * from test where area = 10
但直接把 SQL 丢 SQL 工具里跑又没什么问题, 百度了一圈都没找到有人有相同问题, 明白后特地做下记录.
原因
由于要做分库, 代码连接 MySQL 时并没有直接连 MySQL, 而是连上的 MyCat, 恰好那个字段是分库的依据字段, 由于我没法拿到 mycat 的配置, 这里只能猜测, mycat 分库使用了该字段, 并且执行了类似 String.valueOf(area).subString(x)
的操作, 这就导致 当分库字段长度小于 x 时就会爆出 String index out of range: x, 而且由于这个错误不是 MySQL 的原因, 这就导致 直接用 SQL 工具执行是不会复现的.
省流
MyCat 分库导致的