MySQL中group_concat_max_len的最大允许值是多少?

29

我正在使用group_concat将许多行连接成一行。

我使用以下语句将group concat设置为10000:

SET group_concat_max_len = 10000;

即使如此,我的输出单元仍然不完整,并以...结束。

我尝试将group_concat_max_len设置为20000,但即使那样也没有帮助。

我还尝试将group_concat_max_len设置为99999999,它仍然无法完成我的输出文本。 我检查了其中一个组合连接停在长度为230个字符处,然后给出...

还有其他方法吗?


1
http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_group_concat_max_len 18446744073709551615 - Mihai
1
@Mihai,为什么不把那个发表为答案呢? - Rahul
2
@Rahul 嗯,只是一个快速的谷歌搜索,我更感兴趣学习一些东西而不是砸钱。 - Mihai
2
在任何查询之前使用 SET SESSION group_concat_max_len =.. - Mihai
2
是的,在Mihai发表评论后大约1分钟,我就发布了我的答案。如果我只想发布一个没有描述性文本的链接,我可能会同时发布。我并不太在意分数,但是如果问题仅在评论中得到回答,它们将始终保留在“未回答”队列中。不发布真正的答案的人正在违反StackOverflow的使用意图。 - Bill Karwin
显示剩余3条评论
2个回答

44

请查看此链接:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_group_concat_max_len

该页面记录了所有MySQL配置变量的详细信息,包括最小值、最大值、默认值、可否全局或会话级别设置、是否可以在运行实例时更改,以及其他用法说明。

group_concat_max_len的最大值为18446744073709551615。

group-concat字符串没有以“...”结尾。 如果您尝试组合太多文本,则它将被截断。 所以我想问题不是MySQL的设置,而是您单元格的显示方式。


1
就像我所说的那样,这可能是显示器的限制,而不是MySQL服务器的限制。 - Bill Karwin
1
没错,就是这样。你可以尝试执行像 select repeat('a', 1024*1024) 这样的查询,然后也会看到 "..."。这是 MySQL Workbench 的一个问题,它只显示了字符串的有限前缀,即使服务器已经返回了一个很长的字符串。 - Bill Karwin
2
是的。它在程序上运行正常。因此,截断发生在客户端而不是服务器端。 - user3422637
1
如果您正在使用 Workbench,您可以右键单击列并选择“在查看器中打开值”以查看整个字符串。 - Rafael Herscovici
我想知道MySQL是否会预先为该会话分配那么多字节。参数group_concat_max_len的内存是如何管理的? - Abhijit Buchake
显示剩余4条评论

20

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接