• 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一致,不再赘述。

  • 相关阅读:
    Word修订内容批量标红
    Java Web从入门到实战
    【React】【Ant Deign】手机验证码登录效果实现
    在Android中实现区域截屏
    【云原生&微服务十】SpringCloud之OpenFeign实现服务间请求头数据传递(OpenFeign拦截器RequestInterceptor的使用)
    【简单】 猿人学web第一届 第3题 罗生门
    c++day4
    第一章:Spring流程执行步骤
    SpringBean面试题
    RabbitMQ 的延时队列和镜像队列原理与实战
  • 原文地址:https://blog.csdn.net/qq_35427589/article/details/126957656