MySQL 5.5.28 sur Ubuntu 12.04
Si le résultat est supérieur à group_concat_max_len
alors le résultat est tronqué sans grâce.
Actuellement, j'ai un script qui essaie de vérifier à l'avance la longueur requise et définit group_concat_max_len
pour être assez grand.
Mais la vérification ajoute des requêtes supplémentaires. Y a-t-il un inconvénient à simplement définir group_concat_max_len
à la valeur maximale? L'avantage est moins de requêtes.
Selon MySQL BOL ici
La valeur maximale pour
group_concat_max_len
pour 64 bits est18446744073709551615
&
La valeur maximale pour
group_concat_max_len
pour 32 bits est4294967295
Le résultat est tronqué à la longueur maximale donnée par la variable système group_concat_max_len
, qui a une default value of 1024
. La valeur peut être définie plus haut, bien que la longueur maximale effective de la valeur de retour soit limitée par la valeur de max_allowed_packet
. La syntaxe pour modifier la valeur de group_concat_max_len
à runtime
est la suivante, où val est un unsigned integer
:
SET [GLOBAL | SESSION] group_concat_max_len = val;
Remarque: La longueur du résultat maximum permitted
En bytes
pour la fonction GROUP_CONCAT()
. La valeur par défaut est 1024
.
Comme le blog MySQL documenté Ici Utilisation de GROUP_CONCAT
avec un petit group_concat_max_len
réglage? Votre résultat sera silently truncated
(Assurez-vous cependant de vérifier les avertissements).
En tant que blog MySQL par @Shlomi Noach
icigroup_concat_max_len
: ce paramètre limite la longueur de texte maximum
d'un résultat de concaténation GROUP_CONCAT
. Il s'agit par défaut de 1024
. Je pense que c'est une valeur très faible. J'ai utilisé GROUP_CONCAT
De plus en plus récemment pour résoudre des problèmes autrement difficiles. Et dans la plupart des cas, 1024
N'était que too low
, Ce qui entraînait silencieux (Argh!) À tronquer le résultat, renvoyant ainsi des résultats incorrects. Il est intéressant d'apprendre que la valeur maximale de ce paramètre est limitée par max_packet_size
. Je suggère donc que ce paramètre soit complètement supprimé et que le max_packet_size
limitation
soit le only limitation
. Sinon, j'aimerais qu'il ait un very large default value
, de l'ordre de quelques-uns MB
.
J'apprécie que cette question soit un peu ancienne maintenant, mais au cas où quelqu'un la trouverait et se demanderait, un inconvénient de la définition de la valeur maximale (ou sinon très grande) est que group_concat peut renvoyer un blob plutôt qu'un varchar. Suggestions ailleurs dites de mettre group_concat_max_len à 512 pour qu'il retourne toujours un varchar plutôt qu'un blob. Cependant, j'ai tendance à le jeter sur char au besoin.