この投稿のタイトルは「CONCAT とロングテキストのトラブル」ですが、質問者は本当に GROUP_CONCAT について知りたがっていたので誤解を招きます。MySQL の CONCAT の制限に対処していたため、Google でこの投稿を見つけました。この投稿を見つけて、CONCAT に許可されている最大長を増やす方法を探している人は、次のようにします。
問題は、group_concat_max_len の調整が CONCAT では機能せず、GROUP_CONCAT でのみ機能することです。つまり、CONCAT でこの制限に達している場合は、クエリを修正して GROUP_CONCAT を使用する必要があります。
したがって、次のように CONCAT を使用しているとします。
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';
ただし、some_field の内容の最後に連結しようとしているデータは、切り捨てられているか、フィールド some_field を null/空に設定するだけです。したがって、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'
詳細については、以下のリンクでこの回答を見つけた記事をご覧ください。ソース: http://boulderapps.co/mysql-concat-limitation