La difficulté avec GROUP_CONCAT et Longtext dans MySQL
Le SQL...
UPDATE Threads t
SET t.Content = (
SELECT GROUP_CONCAT(a.Content ORDER BY a.PageID SEPARATOR '<!-- pagebreak -->')
FROM MSarticlepages a
WHERE a.ArticleID = t.MSthreadID GROUP BY a.ArticleID
)
Comme vous pouvez le voir, il prend tout d'un article de pages (qui sont chaque
stockées en tant que longtext dans des lignes séparées) et GROUP_CONCATs dans un
seul longtext ligne. Le problème est que les résultats ne sont si nombreux
les personnages, puis il est complètement tronqué, perdant environ 90% de
le contenu. Ne CONCAT pas manipuler longtext très bien ou est-il
autre chose que je fais mal?
OriginalL'auteur Iwasakabukiman | 2009-02-09
Vous devez vous connecter pour publier un commentaire.
Selon la Manuel MySQL, la longueur maximale de
GROUP_CONCAT
est définie par lagroup_concat_max_len
variable système, qui par défaut est de 1024.Cette valeur peut être augmentée, par l'aide de la commande suivante:
Il convient de noter, toutefois, que la valeur de
group_concat_max_len
est elle-même limitée par la valeur de l'autre variable système,max_allowed_packet
, qui est par défaut à 1 048 576.Cette valeur peut être augmentée jusqu'à un maximum de 1,073,741,824, en utilisant la même syntaxe:
Notez qu'en raison de certaines MySQL bug (wontfix)
max_allowed_packet
n' pas moyenne max autorisé paquet uniquement. Voir bugs.mysql.com/bug.php?id=20458#c113677 et dba.stackexchange.com/a/2383/9405OriginalL'auteur
Le titre de ce post est "l'Ennui avec CONCAT et Longtext" qui est trompeur car il qui a posé la question vraiment voulu savoir sur GROUP_CONCAT. J'ai trouvé ce post sur Google parce que j'avais affaire à une limitation CONCAT dans MySQL. Pour ceux d'entre vous qui trouvez cet article et sont à la recherche pour savoir comment augmenter la longueur maximum autorisée pour CONCAT voici comment le faire:
Le problème est le réglage group_concat_max_len de ne pas travailler pour CONCAT elle ne fonctionne que pour GROUP_CONCAT ce qui signifie que si vous êtes en cours d'exécution dans cette limitation avec CONCAT vous devrez retravailler votre requête à utiliser GROUP_CONCAT.
De sorte que vous êtes en utilisant la concaténation de la manière suivante:
Mais les données que vous essayez d'enchaîner sur la fin de some_field du contenu est d'obtenir tronquée ou simplement plan définissant le champ some_field null/vide.
Voici donc la manière dont la requête devra chercher à atténuer l'clairement les limites de CONCAT:
Pour plus d'informations, consultez l'article où j'ai trouvé cette réponse sur le lien ci-dessous.
Source: http://boulderapps.co/mysql-concat-limitation
OriginalL'auteur N D
GROUP_CONCAT à mysql docs:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
Espère que cette aide.
OriginalL'auteur Jack