MYSQL CONCAT MAX LENGTH

После этого поста: POST О CONCAT Моя проблема заключается в том, что у меня много строк CONCAT в одну строку. Например, если у меня есть 10 строк со строкой около 50 символов, мой запрос покажет мне только 6-7 из этих строк или что-то в этом роде. Я ищу в стеке и Google, и я нашел, что я могу изменить максимальную длину CONCAT с помощью команды: SET group_concat_max_len := @@max_allowed_packet. Что я делаю не так?

РЕДАКТИРОВАТЬ: Когда я показываю SHOW VARIABLES LIKE 'group_concat_max_len' он показывает мне 1024. Mysql версия 5.0.96-log. Тип таблиц: MyISAM. Похоже, что нет никаких ограничений, я пытаюсь выбрать простой varchar с 2000 символов, и это выглядит хорошо. У меня есть 3 таблицы: 1-й - Товар с ItemID, 2-й - Пакет Description с ItemID и DescriptionID, 3-й Описание с 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

РЕДАКТИРОВАТЬ 2: Я думаю, что я нашел проблему, я сказал свою проблему своему провайдеру, и они ответили мне так:

Я рассмотрел ваш вопрос с нашей командой хостинга. Вы не сможете изменить глобальные настройки для этой и других переменных. Однако вы должны иметь возможность установить эту переменную для каждого сеанса, установив ее в первую очередь, перед другими запросами. Надеюсь, это поможет.

Так что теперь проблема в том, как это сделать.

Ответ 1

Предположительно вы используете GROUP_CONCAT(), а не просто CONCAT().

Значение по умолчанию group_concat_max_len равно 1024, что является довольно небольшим пределом, если вы создаете большие длинные конкатенации.

Чтобы изменить его, используйте эту команду. Я установил длину в этом примере 100 000. Вы можете настроить его на все, что вам нужно.

 SET SESSION group_concat_max_len = 100000;

Обычное значение для max_allowed_packet составляет один мегабайт, что, вероятно, больше, чем вам нужно.

group_concat_max_len сам имеет практически неограниченный размер. Он ограничивается только длиной без знака платформы: 2 ^ 32-1 на 32-битной платформе и 2 ^ 64-1 на 64-битной платформе.

Если этого недостаточно для вашего приложения, пришло время принять предложение @eggyal и переосмыслить ваш подход.

Ответ 2

You need change group_concat_max_len default value in the bellow config file   
**my.cnf file(Linux) and my.ini file(windows)**   

[mysqld]//Add this line group_concat_max_len=15000 under mysqld section

group_concat_max_len=15000

Note: After change is done You need to restart your MySQL server.   
my.cnf file path in linux :   
 1. /etc/my.cnf   
2./etc/mysql/my.cnf   
3.$MYSQL_HOME/my.cnf   
4.[datadir]/my.cnf   
5.~/.my.cnf