前几天在项目中遇到一个问题,使用 GROUP_CONCAT 函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题。后来查找出原因,解决方法大家跟随爱安网小编一起看看吧

前天在生产环境中遇到一个问题:使用 GROUP_CONCAT 函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题。后面故意重新INSERT了一个字段长度超1024字节的数据,但是navicat能完整展示出来,所以就排除了navicat的问题。

然后想到1024这个熟悉的数字,会不会是C++框架在接收MySQL通过socket传输过来的数据时被处理了呢?于是手工在日志中打印这个字段,发现即使数据长度超过1024字节仍然是可以完整显示的。

1 查找原因

至此,只能从SQL语句出发了。网上搜了下 GROUP_CONCAT 数据截断的问题,答案都指向了 group_concat_max_len 这个参数,它的默认值正好是1024。可以直接在数据库中通过下面的命令查看这个默认值:

mysql> show variables like 'group_concat_max_len';
+----------------------+-------+
| Variable_name  | Value |
+----------------------+-------+
| group_concat_max_len | 1024 |
+----------------------+-------+
1 row in set (0.00 sec)
mysql>

MySQL官方手册 对它的定义是 The maximum permitted result length in bytes for the GROUP_CONCAT() function. ,也就是它限制了 GROUP_CONCAT 数据的长度。

2 解决问题

只要调整 group_concat_max_len 到最大值就行了,官方在MySQL5.7的手册中给出了如下定义:

 

由于BZ的测试虚拟机MySQL5.7.19是64位的,所以可以通过下面这两种方法配置好 group_concat_max_len 为最大值``:

#### 方法一:修改MySQL配置文件my.cnf,在[mysqld]节点中添加
group_concat_max_len = 18446744073709551615
#### 方法二:直接控制台上设置立即生效
-- 更改全局配置----
SET GLOBAL group_concat_max_len=18446744073709551615;
-- 使配置在当前会话中也立即生效,其它已经登录的会话终端需要重启生效----
SET SESSION group_concat_max_len=18446744073709551615;

3 测试效果

这里采用的是第二种方法,通过执行 SELECT LENGTH(GROUP_CONCAT(Fremark)) FROM account; 结果的对比,可以发现已经成功解决了MySQL5.7中使用GROUP_CONCAT数据被截断的问题。

 

总结

以上所述是小编给大家介绍的Mysql5.7中使用group concat函数数据被截断的问题完美解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对爱安网网站的支持!

最新资讯
苹果华人自动驾驶工程师跳槽小鹏汽车前夕被FBI逮捕

苹果华人自动驾驶工程

7月7日,一名曾在苹果自动驾驶汽车项目工作的员工在加州
请放过年轻人、放过我爸妈:知识付费,毒手正下沉

请放过年轻人、放过我

在老师们辛苦打磨课程的时候,知识盗猎者早已空手组局,赚
《魔兽争霸》十五年:孕育MOBA,启蒙电竞

《魔兽争霸》十五年:孕

如果没有这款游戏,我不知道中国的电竞产业是不是还会像
IPO破发后再大涨,小米短期不能高估,长期不可低估

IPO破发后再大涨,小米

外界特别是资本市场对小米模式有不同理解,是小米股价先
“贪心”应用花式偷手机隐私,背后无非是个利字

“贪心”应用花式偷手

这些应用的研发、运营机构对我们手机上关键部位和信息
刷短视频玩小游戏,哪个才是代表未来的正经事?

刷短视频玩小游戏,哪个

互联网中两个被越隔越远的世界,一个世界里的人喜欢用尽
最新文章
MySql 8.0.11安装配置教程

MySql 8.0.11安装配置

这篇文章给大家介绍了MySql 8.0.11安装配置教程,本文给
mysql5.7.22 下载过程图解

mysql5.7.22 下载过程

这篇文章主要介绍了mysql5.7.22 下载过程图解,非常不错
MySql 5.7.17压缩包免安装的配置过程图解

MySql 5.7.17压缩包免

这篇文章主要介绍了MySql 5.7.17压缩包免安装的配置过
MySQL5.7.20解压版安装和修改root密码的教程

MySQL5.7.20解压版安

这篇文章主要介绍了MySQL5.7.20解压版安装和修改root
MySQL8.0.11安装总结教程图解

MySQL8.0.11安装总结

本文通过图文并茂的形式给大家介绍了MySQL8.0.11安装
Windows下MySQL8.0.11社区绿色版安装步骤图解

Windows下MySQL8.0.11

在本教程中使用MySQL最新的MySQL服务8.0.11的社区绿色