mySQL中的数据丢失使用MEDIUMTEXT和页面

时间:2009-02-10 06:26:42

标签: mysql concatenation group-concat

以某种方式,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);

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

1 个答案:

答案 0 :(得分: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()返回的是   除非group_concat_max_len是,否则为VARCHAR   大于512,在这种情况下,它   返回一个BLOB。 (以前,它   返回了一个BLOB   group_concat_max_len大于512   仅当查询包含ORDER BY时   子句。)

根据这些数据,返回类型将是BLOB,而不是MEDIUMTEXT。如果总连接数超过2 ^ 16(65536字节),这是BLOB的限制吗?