The 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
)
As you can see it takes all of an article's pages (which are each stored as longtext in separate rows) and GROUP_CONCATs them into a single longtext row. The problem is the results are only so many characters and then it gets completely truncated, losing about 90% of the contents. Does CONCAT not handle longtext very well or is there something else I am doing wrong?
According to the MySQL manual, the maximum length of GROUP_CONCAT
is defined by the group_concat_max_len
system variable, which defaults to 1024.
This value can be increased, by using the following command:
SET group_concat_max_len = <int>
It should be noted, however, that the value of group_concat_max_len
is itself limited by the value of another system variable, max_allowed_packet
, which defaults to 1,048,576.
This value can be increased to a maximum of 1,073,741,824, using the same syntax:
SET max_allowed_packet = <int>