MariaDB JSON_ARRAYAGG输出限制约1MB问题咨询
问题分析与解决方案
核心原因
MariaDB的JSON_ARRAYAGG等JSON聚合函数受系统变量json_max_length的限制,该变量默认值为1048576字节(1MB)。当聚合生成的JSON字符串长度超过这个阈值时,函数会自动截断结果,导致返回的JSON格式无效。而repeat这类普通字符串函数不受该变量约束,因此能正常生成更大的字符串。
验证与解决步骤
查看当前限制值
执行以下SQL确认当前的json_max_length设置:SHOW VARIABLES LIKE 'json_max_length';临时调整会话级限制
如果只需临时生效(仅当前数据库会话有效),执行:-- 示例:设置为4MB,可根据实际需求调整 SET SESSION json_max_length = 4194304;永久修改配置
若需要全局永久生效,修改MariaDB的配置文件(如my.cnf或my.ini),添加或修改以下配置项:json_max_length = 4194304保存后重启MariaDB服务即可。
注意事项
- 调整
json_max_length时需结合服务器内存资源合理设置,避免因生成过大的JSON字符串导致内存占用过高。 - 若聚合结果远超常规大小,除了调整变量外,也可考虑通过分组拆分查询的方式分批次处理,但需根据业务逻辑适配。
内容的提问来源于stack exchange,提问作者Sam Washington
相关产品推荐
相关产品推荐

