Потеря данных в MySQL с использованием MEDIUMTEXT и страниц

StackOverflow https://stackoverflow.com/questions/531242

Вопрос

Каким-то образом 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?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top