mysql group_concat()方法超过规定长度会截断字符串,导致查询结果不完整
比如:
select type,group_concat(name) name from s_type
where 1 = 1
and p_name in
<foreach collection="nameArray" index="index" item="item" close=")" open="(" separator=",">
#{item}
</foreach>
group by type
查询结果列中的name结果可能不完整,导致后续程序出错,这种错误不易发现和排查。
所以group_concat()要慎用!!!
查询group_concat()函数的长度限制:
show variables like 'group_concat_max_len';
我的数据库默认是1024个字符长度(使用数据库-mysql):
参考https://blog.csdn.net/haijiege/article/details/77867279
网上有两种做法,一种是修改my.ini配置,添加
group_concat_max_len = 4096
或
group_concat_max_len = -1 # -1为最大值或填入你要的最大长度
看网上的说法都是需要重启mysql服务,设置才生效。本人还没实际验证。
我采用的修改方式是直接不使用group_concat方法,涉及的业务模块不多,而且不影响其他业务逻辑,并且数据库没有重启的权限。
又是在bug上写代码的一天,程序员的生活就是这么朴实无华!