MySQL 5.5.28 en Ubuntu 12.04
Si el resultado es más largo que group_concat_max_lenentonces, el resultado se trunca sin gracia.
Actualmente tengo un script que intenta verificar la longitud requerida con anticipación y establece group_concat_max_lenque sea lo suficientemente grande.
Pero la comprobación agrega consultas adicionales. ¿Hay alguna desventaja en simplemente establecer group_concat_max_lenel valor máximo? Lo bueno es menos consultas.
mysql
group-concatenation
Buttle Butkus
fuente
fuente

Respuestas:
Según MySQL BOL aquí
El resultado se trunca a la longitud máxima dada por la
group_concat_max_lenvariable del sistema, que tiene undefault value of 1024. El valor puede establecerse más alto, aunque la longitud máxima efectiva del valor de retorno está limitada por el valor demax_allowed_packet. La sintaxis para cambiar el valor degroup_concat_max_lenatruntimees la siguiente, donde val es anunsigned integer:Nota: La
maximum permittedlongitud del resultadobytespara laGROUP_CONCAT()función. El valor por defecto es1024.Como MySQL documentó el blog aquí ¿ Usando
GROUP_CONCATcon unagroup_concat_max_lenconfiguración pequeña ? Su resultado serásilently truncated(asegúrese de verificar las advertencias).Como MySQL Blog by Here : este parámetro limita la longitud del texto de un resultado de concatenación. Por defecto es . Creo que este es un valor muy bajo. He estado usando más y más, recientemente, para resolver problemas que de otra manera serían difíciles. Y en la mayoría de los casos, fue justo , lo que resultó en un truncamiento silencioso (¡Argh!) Del resultado, lo que arrojó resultados incorrectos. Es interesante saber que el valor máximo para este parámetro está limitado por . Sugeriría, entonces, que este parámetro debería eliminarse por completo, y tener como . De lo contrario, me gustaría que tuviera un , del orden de unos pocos .
@Shlomi Noachgroup_concat_max_lenmaximumGROUP_CONCAT1024GROUP_CONCAT1024too lowmax_packet_sizemax_packet_sizelimitationonly limitationvery large default valueMBPara más su referencia aquí y aquí
fuente
Aprecio que esta pregunta sea un poco antigua ahora, pero en caso de que alguien la encuentre y se pregunte, una desventaja de establecer el valor máximo (o un valor muy grande) es que group_concat puede devolver un blob en lugar de un varchar. Las sugerencias en otros lugares dicen establecer group_concat_max_len en 512 para que siempre devuelva un varchar en lugar de un blob. Sin embargo, tiendo a lanzarlo a char cuando es necesario.
fuente