距离上一次更新该文章已经过了 739 天,文章所描述的內容可能已经发生变化,请留意。
首先项目里有一条类似这样的sql
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| select tr.xxx tr.cm_ids, group_concat(te.xxx) a, group_concat(te.xxx) b, group_concat(te.xxx) c, group_concat(te.xxx) d, from (select tr.1, tr.2, tr.3, group_concat(cm_id) cm_ids from xxx tr where tr.xxx = '123' group by tr.1,tr.2,tr.3) tr left join xxx tc on tr.xxx = tc.xxx left join xxx te on tr.xxx = te.xxx group by tr.1,tr.2,tr.3
|
只查询子查询tr的结果cm_ids大概是70多条,但作为整体查的时候发现只有一半不到,而且还被截断了, 查了下mysql的group_concat默认长度限制为1024,鉴于这里业务复杂、历史悠久,这个sql还远比这个长,无法从sql本身入手,只能将数据库的 group_concat_max_len调大,这里记录下过程
1 2 3 4 5 6 7 8 9 10 11
| 1、执行一下sql语句 SET GLOBAL group_concat_max_len = xxx; SET SESSION group_concat_max_len = xxx;
2、改配置文件(centos)-非容器 - which mysql 得到mysql的安装位置:/usr/local/mysql/bin/mysql - /usr/local/mysql/bin/mysql 得到配置文件的路径,服务器首先读取第一个文件,如果前一个文件不存在则继续读下一个,如果还不存在依次向后查找。 - group_concat_max_len=xxx 修改好后重启(说-1是最大值,但在测试后发现并不是,版本5.7.20)
|