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!

¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top