MySQL GROUP_CONCAT no devuelve toda la información

Nos encontramos con el caso que en una query de MySQL nos damos cuenta que el GROUP_CONCAT que estamos haciendo de un campo no nos está devolviendo todos los valores que esperaríamos.

Después de investigar un poco, nos damos cuenta que está cortando el texto de salida a 1024 carácteres.

Solución: GROUP_CONCAT_MAX_LEN

Existe una variable de MySQL que justamente limita a un número de carácteres determinado la salida de un GROUP_CONCAT. Se trata de la variable: group_concat_max_len.

Como saber qué valor tiene en nuestro entorno

Para saber el valor de la variable group_concat_max_len en nuestro propio caso, haremos lo siguiente:

Como modificar el valor de esta variable

Entonces, lo que debemos hacer es aumentar el valor de esa variable para que no nos limite la salida:

o si queremos cambiarlo solo para nuestra sesión actual:

Si ha funcionado correctamente, nuestra variable de sistema habrá cambiado su valor al nuevo que hemos especificado.

Tenemos que tener en cuenta que este valor va a perderse cuando el servidor se reinicie. Por lo tanto, si nos interesa persistir este valor de forma indefinida en el servidor, tendremos que editar el fichero de configuración de MySQL y hacer la modificación de la variable group_concat_max_len desde allí, de modo que ante cualquier reinicio, el valor especificado será cargado como valor por defecto.

#1227 – Access denied; you need the SUPER privilege for this operation

Al intentar modificar este valor, puede ser que nos aparezca este mensaje de error. Algo bastante habitual si lo estamos intentando hacer en un servidor compartido. Esto pasa porque nuestro usuario no tiene suficientes privilegios para hacer tal cambio en el servicio de MySQL.

Si tienes posibilidad de ejecutarlo con un usuario con permisos, vuelve a intentarlo de esta forma. Sino, tendrás que hablar con el administrador del sistema para que hagan ellos el cambio. Y sino, no te queda otra que buscar un método alternativo en tus queries.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *