背景
在做业务统计的时候,我们会用到mysql的group_concat函数,如果数据量比较大的话,比如统计权限系统中某个角色下的都有哪些用户?这个时候你发现,用户名称莫名截断了,经排查,原来这个变量默认为1024长度。
解决方法
使用sql设置group_concat的最大长度, 但是这种方式在重启mysql后就无效。
//查看长度
show variables like 'group_concat_max_len'
//设置当前session,其他session连接不受影响
SET SESSION group_concat_max_len = 10240;
//设置全局,当前session不受影响,需要断开重连才生效
SET GLOBAL group_concat_max_len = 10240;
在MySQL配置文件中my.conf或my.ini中添加, 然后重启mysql服务。
#[mysqld]
group_concat_max_len=102400