一尘不染

在MySQL中出现GROUP_CONCAT和Longtext问题

mysql

SQL …

UPDATE Threads t 
SET t.Content = (
    SELECT GROUP_CONCAT(a.Content ORDER BY a.PageID SEPARATOR '<!-- pagebreak -->') 
    FROM MSarticlepages a
    WHERE a.ArticleID = t.MSthreadID GROUP BY a.ArticleID
)

如您所见,它占用了文章的所有页面(每个页面均以长文本形式存储在单独的行中),并通过GROUP_CONCAT将它们分成单个长文本行。问题在于结果只有太多的字符,然后它被完全截断,丢失了大约90%的内容。CONCAT是否不能很好地处理长文本,还是我做错了其他事情?


阅读 282

收藏
2020-05-17

共1个答案

一尘不染

根据MySQL手册,最大长度GROUP_CONCATgroup_concat_max_len系统变量定义,默认为1024。

可以使用以下命令来增加此值:

SET group_concat_max_len = <int>

但是,应注意,的值group_concat_max_len本身受另一个系统变量(max_allowed_packet默认值为1,048,576)的限制。

使用相同的语法,可以将该值增加到最大值1,073,741,824。

SET max_allowed_packet = <int>
2020-05-17