SELECT aid, GROUP_CONCAT(bid) FROM tbl GROUP BY aid LIMIT 1; -- 返回 Warning: 1260 | 1 line(s) were cut by GROUP_CONCAT()
業務層無感知,導致下游數據不完整、統計偏差、對賬失敗。
SELECT @@global.group_concat_max_len; -- 1024
當拼接結果超過此值,MySQL 直接截斷並拋出 Warning(非 Error),應用若未檢查 Warning 將不知情。
SET SESSION group_concat_max_len = 102400; -- 100KB -- 或 SET @@session.group_concat_max_len = 102400;
[mysqld] group_concat_max_len = 102400
修改後 service mysqld restart。
SELECT
aid,
GROUP_CONCAT(bid ORDER BY bid DESC SEPARATOR '|') AS bid_str
FROM tbl
GROUP BY aid;
AVG(LENGTH(bid)) * COUNT(*) 估算單組大小,設為 2~3 倍餘量。SHOW WARNINGS。JSON_ARRAYAGG(5.7+)、導出文件處理。sort_buffer_size、join_buffer_size 相關),避免設為 GB 級。