关注此帖:POST ABOUT CONCAT
我的问题是我有很多行CONCAT
成一行。例如,如果我有10行字符串大约50个字符,我的查询将只显示6-7行或类似的东西。
我在堆栈和谷歌搜索,我发现我可以通过命令更改CONCAT最大长度:SET group_concat_max_len := @@max_allowed_packet
。我做错了什么?
修改
当我SHOW VARIABLES LIKE 'group_concat_max_len'
时,它会显示1024。
Mysql版本5.0.96-log。表类型:MyISAM。看起来它没有任何限制,我尝试用2000个字符选择简单的varchar,它看起来很好。
我有3个表:1st - Item with ItemID,2nd - Descriptionpack with ItemID和DescriptionID,3rd Description with 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
EDIT2:我想我发现了问题,我向我的提供商说了我的问题,他们回答了我的问题:
我与托管小组审核了您的问题。你不可能 更改该变量和其他变量的全局设置。然而, 你应该能够在每个会话的基础上设置该变量 在其他查询之前先设置它。希望有所帮助。
所以现在的问题是,如何做到这一点。
答案 0 :(得分:26)
据推测,您使用的是GROUP_CONCAT()
,而不是简单的CONCAT()
。
group_concat_max_len
的默认值是1024,如果你正在构建大型长连接,这是一个非常小的限制。
要更改它,请使用此命令。我已将此示例中的长度设置为100,000。您可以将其设置为您需要的任何内容。
SET SESSION group_concat_max_len = 100000;
max_allowed_packet的通常值是1兆字节,可能比你需要的多。
group_concat_max_len
itself has an effectively unlimited size。它仅受平台的无符号字长限制:32位平台上的2 ^ 32-1和64位平台上的2 ^ 64-1。
如果仍然不适合您的申请,是时候采取@ eggyal的建议并重新考虑您的方法。
答案 1 :(得分:0)
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