Le titre de cet article est "Problème avec CONCAT et Longtext" qui est trompeur car celui qui a posé la question voulait vraiment en savoir plus sur GROUP_CONCAT. J'ai trouvé cet article dans Google parce que j'avais affaire à une limitation avec CONCAT dans MySQL. Pour ceux d'entre vous qui trouvent ce poste et cherchent comment augmenter la longueur maximale autorisée pour CONCAT voici comment faire:
Le problème est d'ajuster group_concat_max_len ne fonctionnera pas pour CONCAT cela ne fonctionne que pour GROUP_CONCAT qui signifie Si vous rencontrez cette limitation avec CONCAT, vous devrez retravailler votre requête pour utiliser GROUP_CONCAT.
dites donc que vous utilisez CONCAT de la manière suivante:
UPDATE some_table
SET some_field=CONCAT(some_field,'super long string to append to the end of the data in some_field')
WHERE some_criteria_field = 'match on this string';
Mais les données que vous essayez de concaténer à la fin du contenu de un_champ devient de plan tronqué ou tout simplement régler le un_champ champ null/vide . Voici donc la façon dont la requête devra chercher à alléger les limites claires de CONCAT:
SET @@session.group_concat_max_len = @@global.max_allowed_packet;
UPDATE some_table SET some_table.some_field=(
SELECT GROUP_CONCAT(queue.append_to_end SEPARATOR '') as new_some_field
FROM
(
SELECT append_to_end FROM some_table WHERE some_criteria_field = 'match on this string'
UNION
SELECT 'super long string to append to the end of the data in some_field' as append_to_end
) as queue
) WHERE some_criteria_field = 'match on this string'
Pour plus d'informations approfondies consultez l'article où j'ai trouvé cette réponse sur le lien ci-dessous. Source: http://boulderapps.co/mysql-concat-limitation
Merci. J'apprécie l'aide! – Iwasakabukiman
Notez qu'en raison de certains bogues MySQL (wontfix) 'max_allowed_packet' ne ** signifie pas ** maximum de paquets autorisés seulement. Voir https://bugs.mysql.com/bug.php?id=20458#c113677 et http://dba.stackexchange.com/a/2383/9405 – Pacerier