2014-08-30 65 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