MySQL 5.5.28 sur Ubuntu 12.04
Si le résultat est plus long que group_concat_max_len
le résultat est tronqué sans grâce.
Actuellement, j'ai un script qui essaie de vérifier la longueur requise à l'avance et qui group_concat_max_len
est suffisamment 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.
mysql
group-concatenation
Buttle Butkus
la source
la source
Réponses:
Selon MySQL BOL ici
Le résultat est tronqué à la longueur maximale donnée par la
group_concat_max_len
variable système, qui a undefault 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 demax_allowed_packet
. La syntaxe pour modifier la valeur degroup_concat_max_len
atruntime
est la suivante, où val est ununsigned integer
:Remarque: La
maximum permitted
longueur du résultat dansbytes
pour laGROUP_CONCAT()
fonction. La valeur par défaut est1024
.Comme MySQL documenté le blog ici En utilisant
GROUP_CONCAT
un petitgroup_concat_max_len
paramètre? Votre résultat serasilently truncated
(assurez-vous cependant de vérifier les avertissements).As MySQL Blog by Here : Ce paramètre limite la longueur du texte d'un résultat de concaténation. Il est par défaut . Je pense que c'est une valeur très faible. J'ai utilisé de plus en plus, récemment, pour résoudre des problèmes autrement difficiles. Et dans la plupart des cas, c'était juste , entraînant une troncature silencieuse (Argh!) Du résultat, retournant ainsi des résultats incorrects. Il est intéressant d'apprendre que la valeur maximale de ce paramètre est limitée par . Je suggérerais alors que ce paramètre devrait être complètement supprimé et avoir le comme le . Sinon, j'aimerais qu'il en ait un , de l'ordre de quelques-uns .
@Shlomi Noach
group_concat_max_len
maximum
GROUP_CONCAT
1024
GROUP_CONCAT
1024
too low
max_packet_size
max_packet_size
limitation
only limitation
very large default value
MB
Pour plus loin votre ref ici & ici
la source
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 retourner un blob plutôt qu'un varchar. Les suggestions ailleurs disent de définir group_concat_max_len à 512 pour qu'il retourne toujours un varchar plutôt qu'un blob. Cependant, j'ai tendance à le jeter en caractères au besoin.
la source