Потеря данных в MySQL с использованием MEDIUMTEXT и страниц
-
22-08-2019 - |
Вопрос
Каким-то образом Group_Concat может собрать шесть «страниц» статьи (каждая из которых хранится как текст) и бросить их в один средний текст, не теряя никаких данных, но есть некоторые одностраничные статьи, которые длиннее, чем обычно (но все же явно подходят В пределах типа текстовых данных), которые теряют значительный объем данных.Кто-нибудь знает, что случилось?
Исходный запрос:
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);
Еще раз спасибо, что нашли время направить мое невежественное «я»!
Решение
Справочное руководство по 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, если только GROUE_CONCAT_MAX_LEN больше 512, и в этом случае он возвращает каплей.(Ранее он возвращал каплей с Group_Concat_max_len, более 512, только если запрос включал в себя пункт «Заказ за»)
На основании этих данных тип возвращаемого значения будет BLOB, а не MEDIUMTEXT.Возможно ли, что общая длина конкатенации превысит 2^16 (65536 байт), что является пределом для BLOB?