最近在办公软件项目,在开发权限指标遇到一个问题:
我们系统的一些逻辑处理是用存储过程实现的,但是有一天客户反馈说权限指标分配报错,查了分配的权限数据牵扯到的数据权限基础资源,没有问题。
权限指标分配的存储过程中有这样两句代码:

SET @tests = '';
SELECT
GROUP_CONCAT( DISTINCT REPLACE ( concat( '''', ( indicator_content ), '''' ), ',', ''',''' ))
AS Allnumber INTO @tests

执行存储过程后 变量@tests会返回一段数据,只能调试存储过程找问题了。调试到下面这段的时候,发现执行完这句sql,@tests就变成不完整的一个语句
1 select GROUP_CONCAT( DISTINCT REPLACE ( concat( '''', ( indicator_content ), '''' ), ',', ''',''' )) into @tests from USEROFINDICATOR ;
由于USEROFINDICATOR表存储的权限指标都是按指标编号存储的数据比较多,所以猜测是不是group_concat的问题,所以我把USEROFINDICATOR表中的数据减少了一半,就是是按某一个用户查询,发现成功了,所以猜测group_concat是不是有长度限制,google一下,果然是这个函数长度不够造成。
关于group_concat函数:
group_concat数据量小的时候没什么问题,但是数据量大的时候就有问题了;
group_concat:默认可连接的长度是1024;如果已经设置了最大长度,超过这个长度就会被截取至这个长度;
在查询(select)语句中,使用了group_concat之后,limit就会失效;
解决方法:
1、修改MySQL的配置文件:
#需要设置的长度
group_concat_max_len = 5120

2、也可以使用sql语句设置:
SET GLOBAL group_concat_max_len=5120;
SET SESSION group_concat_max_len=5120;
但是以上两种方法貌似我都出现了问题,第二种方法开始生效,长度也查了都没问题,但是就是执行语句有问题;

最后我采用第三种方法如下:

3、修改mysql配置文件的方法,修改完后重启MySQL服务,则可以通过语句设置group_concat的作用范围,如:

SET GLOBAL group_concat_max_len=-1;

SET SESSION group_concat_max_len=-1;

以上设置Mysql最大长度设置,

mysql> show variables like "%concat%"; 命令查了一下,数据量挺长的。

注意LINUX 设置需要在/etc/my.cnf  且需要设置位置在 需要有管理员权限才可以操作GLOBAL;

我在存储过程中采用了上面的第三种办法,执行存储过程,OK,完美搞定!

但是有时候我们在生产环境中最好是使用前面两种,尽量避免线上重启数据库服务解决。

MySQL中使用group_concat()函数数据字符过长报错的问题解决方法的更多相关文章

  1. MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!

    最近在工作中遇到一个问题: 我们系统的一些逻辑处理是用存储过程实现的,但是有一天客服反馈说订单下单失败,查了下单牵扯到的产品基础资源,没有问题. 下单的存储过程中有这样两句代码: ; ; ; 执行存储 ...

  2. SQLServer 中实现类似MySQL中的group_concat函数的功能

    SQLServer中没有MySQL中的group_concat函数,可以把分组的数据连接在一起. 后在网上查找,找到了可以实现此功能的方法,特此记录下. SELECT a, stuff((SELECT ...

  3. mysql中的group_concat函数的用法

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: grou ...

  4. MySQL中的group_concat函数的使用

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: grou ...

  5. MO拆分计划行程序中写入PRODUCTIONORDERS表数据出现重复导致报错(BUG)20180502

    错误提示:ORA-00001: 违反唯一约束条件 (ABPPMGR.C0248833319_6192)ORA-06512: 在 "STG.FP_MO_SPLIT", line 19 ...

  6. 修改了Mysql密码后连接不到服务且无报错信息解决方法以及修改密码方法

    安装MYSQL后更改了root的密码后用 net start mysql 启动时出现:无法启动,无报错信息 使用以下命令:1.管理员方式cmd进入mysql安装目录的bin目录下2.执行命令:mysq ...

  7. MySQL在使用group_concat()函数数据被截取

    遇到问题: 项目中有个需求,MySQL中存储的是树状的数据.现在给出一个节点,需要从Mysql数据库中取出这个节点下所有的节点.采用MySQL的函数. 函数如下: CREATE DEFINER=`ro ...

  8. Sql server的Merge语句,源表中如果有重复数据会导致执行报错

    用过sql server的Merge语句的开发人员都应该很清楚Merge用来做表数据的插入/更新是非常方便的,但是其中有一个问题值得关注,那就是Merge语句中的源表中不能出现重复的数据,我们举例来说 ...

  9. MySQL中的group_concat函数

    group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 以cat_id分组,把name字段的值打印在一行, ...

随机推荐

  1. weblogic补丁下载与安装补丁的方法

    文章目录1.根据漏洞报告下载补丁2.补丁包上传解压到Linux3.关于OPatch4.安装补丁4.1单个补丁安装4.2查看已安装的补丁4.3多个补丁安装4.4单个补丁回滚4.5多个补丁回滚4.6验证补 ...

  2. 类String 初识

    String类概述 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例.类 String 中包括用于检 ...

  3. vue移动端常用组件

    3d picker组件 参考链接:https://segmentfault.com/a/1190000007253581?utm_source=tag-newest安装:npm install vue ...

  4. linux第一天

    第一天内容:1>. 命令解析器2>. Linux快捷键3>. Linux 系统目录结构4>. 用户目录5>. 文件和目录操作6>. 文件和目录的属性7>. 文 ...

  5. 台达wplsoft2.34指令表

    常用: LD 载入 A 接点 LDI 载入 B 接点 AND 串联 A 接点 ANI 串联 B 接点 OR 并联 A 接点 ORI 并联 B 接点 ANB 串联回路方块 ORB 并联回路方块 MPS ...

  6. MongoDB启动报错 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability. 【转】

    之前MongoDB启动的时候是蛮正常的,不知道后来启动报错了,就把粘贴出来查询了.最后才知道是由于自己不正常的关闭导致的这个情况. --摘录:MongoDB非正常关闭后修复记录 mongod没有后台执 ...

  7. confluence6.x安装

    一 简介 confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享. 网上有关confluence的教程比较多,在此我们以confl ...

  8. cyq.data 常见使用方法

    配置数据库链接:(这只是其中一种方式) AppConfig.DB.CommandTimeout = 800; AppConfig.DB.DefaultConn = "数据库链接地址" ...

  9. 小白月赛13 小A的路径 (矩阵快速幂求距离为k的路径数)

    链接:https://ac.nowcoder.com/acm/contest/549/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  10. Mybatis技术原理理——整体流程理解

    前言:2018年,是最杂乱的一年!所以你看我的博客,是不是很空! 网上有很多关于Mybatis原理介绍的博文,这里介绍两篇我个人很推荐的博文 Mybatis3.4.x技术内幕和 MyBaits源码分析 ...