Потеря данных в MySQL с использованием MEDIUMTEXT и страниц - PullRequest
0 голосов
/ 10 февраля 2009

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

1 голос
/ 10 февраля 2009

Справочное руководство по 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. (Ранее это вернул BLOB с group_concat_max_len больше 512 только если в запрос включен ORDER BY пункт.)

На основании этих данных тип возвращаемого значения будет BLOB, а не MEDIUMTEXT. Возможно ли, что общая конкатенация превышает 2 ^ 16 (65536 байт), что является пределом для BLOB?

...