Der Titel dieses Beitrags lautet "Trouble with CONCAT and Longtext", was irreführend ist, da der Fragesteller eigentlich etwas über GROUP_CONCAT wissen wollte. Ich habe diesen Beitrag in Google gefunden, weil ich mit einer Einschränkung von CONCAT in MySQL zu tun hatte. Für diejenigen, die diesen Beitrag finden und wissen wollen, wie man die maximal zulässige Länge für CONCAT erhöht, hier eine Anleitung:
Das Problem ist, dass die Anpassung von group_concat_max_len nicht für CONCAT funktioniert, sondern nur für GROUP_CONCAT. Das bedeutet, dass Sie Ihre Abfrage überarbeiten müssen, um GROUP_CONCAT zu verwenden, wenn Sie mit CONCAT auf diese Einschränkung stoßen.
Angenommen, Sie verwenden CONCAT auf folgende Weise:
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';
Aber die Daten, die Sie versuchen, am Ende des Inhalts von some_field zu verketten, werden abgeschnitten oder das Feld some_field wird einfach auf null/leer gesetzt. Die Abfrage muss also folgendermaßen aussehen, um die eindeutigen Einschränkungen von CONCAT zu mildern:
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'
Weitere Informationen finden Sie in dem Artikel, in dem ich diese Antwort gefunden habe, unter dem unten stehenden Link. Quelle: http://boulderapps.co/mysql-concat-limitation