2014-08-30 33 views
0

在MySQL中我使用GROUP_CONCATGROUP_CONCAT允许的最大长度?如何通过它?

SELECT 
visits, 
GROUP_CONCAT(token) as token 
FROM general 
GROUP BY visits 

但问题是,我有相同的访问行的数量庞大,并使用PHP它不允许我打印的一切。

是否有解决方法?

+0

'SET GROUP_CONCAT_MAX_LEN = 100000000000000000000000000000000000000000000'' – 2014-08-30 18:19:26

+2

我想知道为什么downvoter浪费了downvote ......这是一个很好的问题。 – cybermonkey 2014-08-30 18:20:37

+0

@MKhalidJunaid ...什么? – cybermonkey 2014-08-30 18:24:08

回答

2

我跑进当我试图GROUP_CONCAT一个字符串,它太大了同样的问题..所以我做了什么来解决这个问题是这样的

SET SESSION group_concat_max_len = 10000000000000000; 

这是一个临时的功能,这意味着它不会实际永远改变它,但只在你的查询会话的范围内。

我不会建议永远改变它,但只限于你的查询范围......这样你不会占用大量的内存空间用于该功能..当你可能不需要一直使用它

除此之外,如果你真的想重置它到一个更大的长度,而不是改变你的会话,那么只需从查询中删除会话来设置它。

所以您的查询应该是这样的

SET SESSION group_concat_max_len = 10000000000000000; -- # -- or whatever size you need to make it 
SELECT 
    visits, 
    GROUP_CONCAT(token) as token 
FROM general 
GROUP BY visits; 

,如果你仍然得到一个错误@ spencer7593正确地指出..你可能需要改变你的max_allowed_packet ...你可以做到这一点从本SO POST

+2

另外请注意,'GROUP_CONCAT'函数返回的字符串长度也受**'max_allowed_pa​​cket ** **变量限制。 – spencer7593 2014-08-30 18:42:36

+0

downvoter谨慎解释? – 2014-08-30 18:46:07

+0

我得到这个错误'PHP解析错误:语法错误,意外的T_STRING' – EnexoOnoma 2014-08-30 18:51:50

相关问题