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是否不能很好地处理长文本,还是我做错了其他事情?
根据MySQL手册,最大长度GROUP_CONCAT由group_concat_max_len系统变量定义,默认为1024。
GROUP_CONCAT
group_concat_max_len
可以使用以下命令来增加此值:
SET group_concat_max_len = <int>
但是,应注意,的值group_concat_max_len本身受另一个系统变量(max_allowed_packet默认值为1,048,576)的限制。
max_allowed_packet
使用相同的语法,可以将该值增加到最大值1,073,741,824。
SET max_allowed_packet = <int>