解决mysql中group_concat长度限制的方案

Posted 徊忆羽菲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决mysql中group_concat长度限制的方案相关的知识,希望对你有一定的参考价值。

解决mysql中group_concat长度限制的方案

group_concat函数

在mysql中的group_concat函数默认支持的最大字符数为1024。
当你使用group_concat函数时,超出第1024字符的字符会全部丢失。

show variables like 'group_concat_max_len';

今天就被这个问题搞了一两个小时。不使用group by和group_concat时数据是正确的。
一用就发现使用了group_concat函数的列少了一些数据。

获得group_concat的最大长度

SELECT @@global.group_concat_max_len;
或者
show variables like "group_concat_max_len";

一看自己的mysql中group_concat的最大限制 发现等于1024

两种解决方案

1、使用sql设置group_concat的最大长度

SET GLOBAL group_concat_max_len=4294967295; 
SET SESSION group_concat_max_len=4294967295; 

2.在MySQL配置文件中my.conf或my.ini中添加:

#[mysqld]
group_concat_max_len=4294967295

然后重启mysql服务

service mysqld restart
或者
systemctl restart mysqld.service

再次点击查看就发现已经修改了

解决Mysql group_concat长度限制

执行如下sql:

SELECT GROUP_CONCAT(id) AS user_ids FROM broker_company WHERE `status`=1

结果如下:

789,1516,1554,1584,1634,1714,1734,1742,1758,1834,1836,2076,...,9021,    //后边还有,但是只截取前1024个字符
group_concat长度默认设置为1024;
 
解决问题只需修改Mysql配置文件中grop_concat_max_len即可或者执行以下sql:
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;



以上是关于解决mysql中group_concat长度限制的方案的主要内容,如果未能解决你的问题,请参考以下文章

MySQL GROUP_CONCAT长度限制引发的一场灾难

mysql group_concat()函数 长度限制修改办法

group_concat 函数长度限制解决

group_concat 函数长度限制解决

MYSQL中group_concat有长度限制!默认1024

MYSQL中group_concat有长度限制!默认1024(转载)