背景
做了一个功能,用到了group_concat函数,但是这个是有默认值的,默认值1024,不够我使用。
网友给出的解决方法
方法1(需要管理员权限)
SHOW VARIABLES LIKE "group_concat_max_len"; #查询最大值
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400
参考链接:https://blog.csdn.net/catoop/article/details/41805437
方法2(这个是线上的,不可能轻易去改)
永久设置group_concat长度,需要修改my.cnf或my.ini文件,在文件中找到[mysqld] 在后面添加group_concat_max_len=102400,保存之后然后重启mysql即可
方法3(临时设置,在mysql客户端是一次性的,对于我正好可以用)
1、执行set group_concat_max_len=102400;
2、执行你用concat写好的sql
使用临时设置后,再次遇到了问题,如何在mapper.xml中执行set group_concat_max_len=102400;
一开始,使用;在select中使用,但是报错,不予许执行多个sql,需要在jdbc连接中加上allowMultiQueries=true,但是我的mysql连接是有的。这种写法排除掉。
后面尝试使用,update标签修改(都是修改操作嘛,原谅我小白),结果这个报错,说返回值类型错误,这种也不行。
<update id="setGroupConcat" >
set group_concat_max_len=102400;
</updatet >
一般updae语句是返回更新行数的,但是set是没有的,我又联想到直接用select去操作。执行成功(喜极而泣)。
<select id="setGroupConcat" >
set group_concat_max_len=102400;
</select >