当前位置:主页 > mysql教程 > Mysql5.7中使用group concat函数数据被截断的问题完美解决方法

怎样解决Mysql5.7中group concat函数数据被截断的问题

发布:2020-02-27 18:16:13 118


给网友朋友们带来一篇MySQL相关的编程文章,网友卢铃语根据主题投稿了本篇教程内容,涉及到mysql、group、concat、Mysql5.7中使用group concat函数数据被截断的问题完美解决方法相关内容,已被919网友关注,相关难点技巧可以阅读下方的电子资料。

Mysql5.7中使用group concat函数数据被截断的问题完美解决方法

前天在生产环境中遇到一个问题:使用 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的手册中给出了如下定义:

Mysql5.7中使用group concat函数数据被截断的问题完美解决方法

由于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函数数据被截断的问题完美解决方法

总结

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


参考资料

相关文章

  • MySQL关于索引与优化总结

    发布:2020-06-17

    本篇文章主要介绍了MySQL——索引与优化,索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。有兴趣的可以了解一下。


  • mysql 5.7.18 zip版安装配置步骤

    发布:2020-01-31

    这篇文章主要为大家详细介绍了win7下mysql 5.7.8 zip版安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • 当mysql提示[Warning] Invalid (old?) table or database name时如何解决

    发布:2020-03-12

    今天一个朋友的上服务器出现[Warning] Invalid (old?) table or database name问题,通过分析binlog日志发现,在以下sql语句中出现问题,由于涉及敏感内容,用sql语法表示


  • Python MySQL数据库中pymysqlpool是如何使用的?

    Python MySQL数据库中pymysqlpool是如何使用的?

    发布:2022-06-22

    给大家整理了关于Python的教程,这篇文章主要跟大家介绍了关于Python MySQL数据库连接池组件pymysqlpool的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。


  • MySQL中UPDATE语句用法教学

    发布:2020-05-13

    这篇文章主要介绍了MySQL中UPDATE语句使用的实例教程,包括UPDATE的使用中所容易引起的性能问题的分析,需要的朋友可以参考下


  • Python+MySQL随机试卷及答案生成程序的实力分析

    发布:2021-08-26

    这篇文章主要介绍了Python+MySQL随机试卷及答案生成程序的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


  • mysql建表常用sql语句个人经验分享

    发布:2022-06-17

    给大家整理了关于mysql的教程,熟悉一些常用的建表语句可以提升你建表的速度效率,本文整理了一些,个人感觉还不错,希望对大家有所帮助


  • MYSQL 随机 抽取实现方法及效率分析

    发布:2023-01-11

    给大家整理了关于MYSQL的教程,MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。


网友讨论