前几天在项目中遇到一个问题,使用 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函数数据被截断的问题完美解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对爱安网网站的支持!

最新资讯
后直播时代网红求生之道:打赏不够,广告、带货来凑

后直播时代网红求生之

屏幕这端,是独自面对麦克风的“艺人”;屏幕那一端,是4亿
还把苹果发布会当“科技春晚”看,你就输了

还把苹果发布会当“科

今年苹果秋季发布会有个非常主流的评论方向,叫“贵成为
小程序未必是支付宝的理想生态

小程序未必是支付宝的

支付宝的困扰在于如果小程序的目标是骚扰并牵制微信,那
人民不需要这样的iPhone

人民不需要这样的iPho

你大爷还是你大爷。
外媒评iPhone汇总:继续价格抬高战略 单价更贵更赚钱

外媒评iPhone汇总:继

手机是苹果的利润之源,虽然设计没有太大变化,不过市场普
在四川深山里做自媒体:田间地头产10万+ 月收入过万

在四川深山里做自媒体

这是农村自媒体的黄金时期,是农村人翻身的另一个机会,也
最新文章
mysql8.0.11客户端无法登陆的解决方法

mysql8.0.11客户端无

这篇文章主要为大家详细介绍了mysql8.0.11客户端无法
MySQL Community Server 8.0.11安装配置方法图文教程

MySQL Community Serv

这篇文章主要为大家详细介绍了MySQL Community Server
mysql 8.0.11压缩包版本安装教程

mysql 8.0.11压缩包版

这篇文章主要为大家详细介绍了mysql 8.0.11压缩包版本
win10下mysql 8.0.11压缩版安装详细教程

win10下mysql 8.0.11

这篇文章主要为大家详细介绍了win10下mysql 8.0.11压
mysql 8.0.11 压缩包版安装配置方法图文教程

mysql 8.0.11 压缩包

这篇文章主要为大家详细介绍了mysql 8.0.11 压缩包版
mysql8.0.11 winx64安装配置方法图文教程(win10)

mysql8.0.11 winx64安

这篇文章主要为大家详细介绍了win10下mysql8.0.11 win