背景

做了一个功能,用到了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连接是有的。这种写法排除掉。

参考链接:https://blog.csdn.net/chp891202/article/details/85012940?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

后面尝试使用,update标签修改(都是修改操作嘛,原谅我小白),结果这个报错,说返回值类型错误,这种也不行。

<update  id="setGroupConcat" > 
	      set group_concat_max_len=102400;
 </updatet >

 一般updae语句是返回更新行数的,但是set是没有的,我又联想到直接用select去操作。执行成功(喜极而泣)。

<select  id="setGroupConcat" > 
	      set group_concat_max_len=102400;
    </select >

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐