今天突然发现有个接口中的值被截取了,debug一波后发现sql查询出来的结果已经是不完整的,排查后发现这个sql用了group_concat后查询出来的数据被截取了,此时我的内心。。。
group_concat在部分版本中默认字符长度为1024,真是个大坑,不知道的还以为能完整拼接呢,结果被截取了,我是5.56-MariaDB版本,如果出现这个问题或者这个版本的有问题了可以查看下这个参数的长度
使用命令如下:
select variables like 'group_concat_max_len';
如果是1024,那暂时无法升级或更换版本,两种方法,推荐使用方法二,
一是那可以用一下临时方案,但是一定要注意,这个是具有时效性的,也就是如果重启mysql服务器时就会失效;
使用命令如下,我是给长度乘10了,具体多少你可以自己设置:
SET GLOBAL group_concat_max_len = 1024 * 10; SET SESSION group_concat_max_len = 1024 * 10;
二是修改mysql的my.ini添加或者新增 group_concat_max_len = 10240(你想要的长度)