• MySQL执行SQL语句报错Row xxx was cut by GROUP_CONCAT()


    报错和问题分析

    报错日志:

    Cause: java.sql.SQLException: Row 133 was cut by GROUP_CONCAT()
    ...
    Cause: java.sql.SQLException: Row 133 was cut by GROUP_CONCAT()\n; uncategorized SQLException; SQL state [HY000]; error code [1260]; Row 133 was cut by GROUP_CONCAT();
    

    通过报错日志可以看到是使用GROUP_CONCAT函数报错,查找原因发现是拼接的字符串过长导致无法返回结果。
    通过查找资料是由于group_concat_max_len参数设置导致的。
    查找参数的配置:

    show variables like "group_concat_max_len";
    

    在这里插入图片描述

    根据结果显示,默认的可拼接串最大长度不超过1024个字节,期望能够扩大允许的拼接字符串最大长度。

    解决办法

    扩大允许拼接字符串的最大长度。总共有两种更改方式:

    • 更改配置文件,优点是即使重启数据库也不会使设置失效,缺点是第一次更改需要重启数据库才能生效;
    • 另一种是执行命令来进行更改,优点是不需要重启数据库即时生效,缺点是重启数据库后设置失效。

    Windows

    1. 更改my.ini配置文件,添加如下行,扩大允许的拼接字符串最大长度:
    group_concat_max_len=102400
    

    配置完成后,进入服务,选择MySQL服务,重新启动。
    Windows环境MySQL服务重启
    重启后,执行查看最大允许长度已调整成102400。

    image.png

    1. 命令行更改

    连接到数据库后,执行以下命令:

    # 从原先的1024字节(1kb)调整为102400字节(100kb),全局会话
    SET GLOBAL group_concat_max_len = 102400;
    # 从原先的1024字节(1kb)调整为102400字节(100kb),当前会话
    SET SESSION group_concat_max_len = 102400;
    

    Linux

    与Windows环境类似,一般配置文件所在位置为:/etc/my.cnf
    使用vim进入到配置文件编辑模式,加上以下配置:

    group_concat_max_len=102400
    

    重启数据库:

    systemctl restart mysqld
    

    重新连接数据库后,检查是否生效:

    show variables like "group_concat_max_len";
    

    命令行修改方式与Windows一致,不再赘述。

  • 相关阅读:
    设计模式(5)-使用设计模式实现简易版springIoc
    C++ - 位图 - bitset 容器介绍
    礼帽和黑帽
    华为ipv6 over ipv4 GRE隧道配置
    数据可视化之地图可视化
    three.js 航拍全景图(+陀螺仪)
    Matlab中的特殊函数使用(合流超几何函数、Kummer函数、贝塞尔函数等)
    电商运营管理——广告系统
    GitHub 优秀的 Android 开源项目
    [附源码]计算机毕业设计小区物业管理系统Springboot程序
  • 原文地址:https://blog.csdn.net/qq_35427589/article/details/126957656