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

最新资讯
苹果或曾计划发布金色款iPhone X

苹果或曾计划发布金色

据该文件送审的时间推测,苹果本来计划在去年九月份发布
从什么时候起,你玩游戏开始考虑时间成本了?

从什么时候起,你玩游戏

于是,虽然现在游戏已经是消费成本最低的娱乐之一,但玩游
印度创企Milkbasket,靠什么在杂货电商领域脱颖而出

印度创企Milkbasket,靠

当你打开冰箱发现第二天需要喝的牛奶已经没有了或者你
中美贸易战升级,对哪国CPI影响更大?

中美贸易战升级,对哪国

就通胀影响而言,特朗普挑起的中美贸易战如果全面开打,真
美团买摩拜买的是什么?

美团买摩拜买的是什么

美团买的是街头的自行车吗?
Facebook 深陷泥潭,扎克伯格打不好的广告牌

Facebook 深陷泥潭,扎

每一个在互联网世界里走过一遭的人,谁都别想全身而退。
最新文章
MySql优化之InnoDB,4GB内存,多查询的my.ini中文配置方案详解

MySql优化之InnoDB,4G

本文是一个针对 4G 内存系统(主要运行只有 InnoDB 表的
MAC下修改mysql默认字符集为utf8的方法

MAC下修改mysql默认字

本文主要介绍了如何修改MAC版mysql默认字符集为utf8,
windows系统mysql5.7.18安装图文教程

windows系统mysql5.7.

这篇文章主要为大家详细介绍了windows系统下mysql5.7.
利用phpmyadmin设置mysql的权限方法

利用phpmyadmin设置my

这篇文章主要介绍了如何利用phpmyadmin设置mysql的权
30个mysql千万级大数据SQL查询优化技巧详解

30个mysql千万级大数

本文总结了30个mysql千万级大数据SQL查询优化技巧,特
Mac MySQL重置Root密码的教程

Mac MySQL重置Root密

安装MySQL后时间太长了会忘记密码,在这里总结一下忘记