La pérdida de datos en MySQL utilizando MEDIUMTEXT y páginas
-
22-08-2019 - |
Pregunta
De alguna manera GROUP_CONCAT es capaz de reunir a seis "páginas" de un artículo (cada uno almacenado como texto) y los echan en una sola MEDIUMTEXT sin perder ningún dato, pero hay algunos de una página artículos que son más largos de lo normal (pero todavía caben obviamente dentro del tipo de datos de texto) que pierden una cantidad significativa de datos. Alguien sabe qué pasa?
búsqueda original:
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);
Gracias de nuevo por tomarse el tiempo para guiar mi ser ignorantes!
Solución
El manual de referencia de MySQL 5.0 ( http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat ) establece lo siguiente:
A partir de MySQL 5.0.19, el tipo devuelto por GROUP_CONCAT () es siempre VARCHAR menos group_concat_max_len es mayor que 512, en cuyo caso, se devuelve un BLOB. (Anteriormente, se devuelto con un BLOB group_concat_max_len mayor que 512 sólo si la consulta incluye un ORDER BY cláusula.)
Sobre la base de estos datos, el tipo de retorno sería BLOB, no MEDIUMTEXT. Wwould ser posible que la concatenación en total es de más de 2 ^ 16 (65536 bytes), que es el límite para BLOB?