0

不知何故,GROUP_CONCAT 能够将一篇文章的六个“页面”(每页存储为 TEXT)并将它们折腾到一个单独的 MEDIUMTEXT 中而不会丢失任何数据,但是有些单页文章比正常的要长(但仍然明显适合在 TEXT 数据类型中)会丢失大量数据。有谁知道怎么回事?

原始查询:

SET group_concat_max_len = 16000000;
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);

再次感谢您花时间指导我无知的自己!

4

1 回答 1

1

MySQL 5.0 的参考手册(http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat)指出:

从 MySQL 5.0.19 开始,GROUP_CONCAT() 返回的类型始终为 VARCHAR,除非 group_concat_max_len 大于 512,在这种情况下,它返回一个 BLOB。(以前,只有当查询包含 ORDER BY 子句时,它才会返回 group_concat_max_len 大于 512 的 BLOB。)

根据此数据,返回类型将是 BLOB,而不是 MEDIUMTEXT。总的串联是否有可能超过 2^16(65536 字节),这是 BLOB 的限制?

于 2009-02-10T07:01:16.387 回答