Mysql执行保错:Row 17 was cut by GROUP_CONCAT()
转载:https://blog.csdn.net/weixin_41287692/article/details/82848766
在做行转列的数据处理时需呀用到group_concat函数,要求:数据是每15分钟作为一个标记,按照时间输出全天的数据,部分sql语句如下:
drop PROCEDURE if exists test; delimiter // CREATE PROCEDURE test() BEGIN declare a_sql MEDIUMTEXT DEFAULT NULL; select GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(s_time = ''',s_time,''',cell_id,0)) as ''', s_time,'''' ) ) INTO a_sql from hot_ci; select a_sql; end // delimiter ; call test();
起初写完sql之后使用少量数据进行测试验证,发现sql没问题,当把一周的数据全部导入之后,由于需要转换的数据过多而保错,在存储过程的执行过程中报一下错误:
Row 17 was cut by GROUP_CONCAT()
一通百度之后,不是通过存储过程调用的话,查看相关sql发现a_sql生成的数据不完全,大部分数据缺失,刚开始一直在纠结是否a_sql的变量类型导致的,一直在试图修改变量类型并重新复制,直至看到这篇文章之后,临时设置GROUP_CONCAT函数的最大长度限制,由于系统默认长度为1024,超出部分将会被截掉导致无法将全部数据存储至变量导致。
SELECT @@global.group_concat_max_len;
解决办法:
1、
5b4
修改配置文件:/etc/my.cnf
group_concat_max_len = 102400 #你要的最大长度
2、执行临时修改
SET GLOBAL group_concat_max_len=102400;
或
set @@global.group_concat_max_len = 10240;
//会话级
SET SESSION group_concat_max_len = 102400;
此时在执行相关存储过程call test()不会保错了,问题得到解决
注:附:group_concat完整的语法如下:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
- mysql 错误Row 349 was cut by GROUP_CONCAT()
- SQL Server 和 MySQL中 from where group by having order select 执行顺序
- mysql GROUP_CONCAT+ GROUP BY + substring_index获取分组的前几名
- error code [1260]; %d line(s) were cut by GROUP_CONCAT();
- mysql查询分组归类函数-group_concat,通常与group_by一起使用
- Mysql执行group_by的时候报错1055,解决办法
- mysql 查询一个字段,生成连接字符串输出 统计函数 group_concat concat concat_ws
- mysql GROUP_CONCAT获取分组的前几名
- MySQL 使用locate函数对 GROUP_CONCAT 列进行 JOIN 操作
- 解决mysql的配置ONLY_FULL_GROUP_BY引起的错误
- 查询语句中select from where group by having order by的执行顺序
- mysql group by排序问题
- MySQL中函数CONCAT及GROUP_CONCAT
- mysql 1055错误的解决办法 【MYSQL5.7版本sql_mode=only_full_group_by问题】
- MySQL中Max+Group BY查询最大值记录无效
- MSSQL 通过FOR XML PATH 模仿MYSQL的 group_concat 函数,將纪录值合并成字符串
- mysql 5注入中group_concat的使用
- mysql中GROUP BY结合GROUP_CONCAT的使用
- [mysql] incompatible with sql_mode=only_full_group_by
- pandas笔记 基础/groupby/concat/merge/join