MYSQL CONCAT LONGUEUR MAX
Suite à ce post: POST SUR CONCAT
Mon problème est que j'ai beaucoup de lignes CONCAT
dans une ligne. Par exemple, si j'ai 10 lignes avec de la ficelle autour de 50 caractères, ma requête me montrer que 6 à 7 de que les lignes ou quelque chose comme ça.
Je searech dans la pile et google et j'ai trouvé que je peux changer de CONCAT longueur max par commande: SET group_concat_max_len := @@max_allowed_packet
. Ce que je fais de mal?
EDIT:
Quand je SHOW VARIABLES LIKE 'group_concat_max_len'
il me montre 1024.
Version de Mysql 5.0.96-journal. Tables de type: MyISAM. Dirait qu'il n'ont pas de limites, j'essaie de sélectionner simple varchar avec 2000 caractères, et il a l'air bien.
J'ai 3 tables: 1er - Élément avec ItemID, de la 2e à la Descriptionpack avec ItemID et DescriptionID, 3e Description avec DescriptionID.
Select
DISTINCT Item.ItemID as item
,GROUP_CONCAT(Description.DescriptionID) AS description
From Item
LEFT OUTER JOIN descriptionpack
on Item.ItemID=descriptionpack.ItemID
LEFT OUTER JOIN description
on descriptionpack.descriptionID=description.descriptionID
GROUP BY item
EDIT2: je pense que j'ai trouvé le problème, je l'ai dit mon problème à mon fournisseur et ils me répondent ceci:
J'ai examiné votre question à notre équipe d'hébergement. Vous ne seriez pas en mesure
pour modifier les paramètres globaux pour cela et d'autres variables. Cependant,
vous devriez être en mesure de définir cette variable de session par session par
réglage en premier, avant les autres requêtes. Espérons que cela aide.
Alors maintenant le problème est, comment le faire.
Jusqu'à présent, il semble que votre string dépasse de votre serveur
max_allowed_packet
. Vérifiez vos paramètres de ti assurez-vous qu'il n'est pas une causeCe client MySQL que vous utilisez? A-t-elle des limites relatives à l'affichage de longues chaînes de caractères? Quelle est votre définition de la table? Quelle est ta requête?
J'ai édité mon post, et de répondre à vos questions.
OriginalL'auteur Crackeraki | 2014-01-03
Vous devez vous connecter pour publier un commentaire.
Je présume que vous êtes en utilisant
GROUP_CONCAT()
, pas simpleCONCAT()
.La valeur par défaut de la
group_concat_max_len
est de 1024, ce qui est une jolie petite limite, si vous construisez jusqu'à la grande concaténations.Pour le modifier, utilisez cette commande. J'ai mis de la longueur dans cet exemple à 100 000. Vous pouvez l'installer à tout ce dont vous avez besoin.
La valeur habituelle pour max_allowed_packet est un méga-octet, ce qui est probablement plus que vous avez besoin.
group_concat_max_len
lui-même a, effectivement, une taille illimitée. Il n'est limité que par la non signé de la longueur des mots de la plateforme: 2^32-1 sur une plate-forme 32 bits et 2^64-1 sur une plate-forme 64 bits.Si ce n'est toujours pas assez pour votre application, il est temps de prendre @eggyal de la suggestion et de repenser votre approche.
Vous devez également définir
max_allowed_packet
sinon, ça ne marcherait pas.Concernant les "pourrait définir à quoi que ce soit vous avez besoin d'", il doit sûrement y avoir une limite...
max limite autorisée est de 65535
Voir ceci: la limite est de loin supérieure à 64 ko.
OriginalL'auteur O. Jones
OriginalL'auteur Reena Mori