MySQL查询数据被截断

0 阅读1分钟

说明:本文记录一个MySQL查询,返回数据被截断的问题;

场景

假设有个用户查询列表,查询条件中有个用户类型(普通用户、大会员、黄金大会员、铂金大会员、至尊大会员),是个下拉列表,可选择对应的用户类型来查询符合条件的用户。

一般来说,用户类型这个查询条件,会单独走一个接口,根据用户表中,所有用户的用户类型这个字段,去重后返回,表示当前拥有的所有用户类型种类。

在这里插入图片描述

对应的MySQL语句,如下:

select GROUP_CONCAT(distinct user_type) userType from i_users;

如下:

在这里插入图片描述

问题

如果种类很多的话,长度会很长,我把distinct去掉,模拟下;

在这里插入图片描述

复制,展开,发现末尾有个类型被截断了,如下:

在这里插入图片描述

这是某次线上发现的问题,反馈有个类型条件没有,但有对应条件的记录,筛选不出来。

解决

排查下来,是函数GROUP_CONCAT有长度限制,默认1024,超出部分被截断。这是MySQL的参数值,可通过下面两个SQL来设置;

# 查看配置项(默认为1024show variables like 'group_concat_max_len';

# 设置配置值(设置为8192SET group_concat_max_len = 8192;

在这里插入图片描述

设置成8192,就OK了,如果还有截断,就再设置大一点。

在这里插入图片描述

首次发布

hezhongying.blog.csdn.net/article/det…