2015-04-07 42 views
0

我有两个表GROUP_CONCAT()的MySQL返回有限的字符

tblColorLibrary

id name 
1  test color 

tblColors

id libraryId colorCode name 
1  1   #fff  Prime Color 
2  1   #ddd  Secondry Color 
3  1   #E2CFC7 Favorite Color 

下面是我的查询:

$stmt ="SELECT a.id, a.isActive as isActive, a.name as title, GROUP_CONCAT(b.colorCode) as colors, GROUP_CONCAT(b.name) as name FROM ".$this->tblLibrary." as a JOIN tblcolors as b ON a.id = b.libraryId GROUP BY a.id ORDER BY b.id ASC"; 

这个查询换货政...这样的结果

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [isActive] => Y 
      [title] => test 
      [colors] => #fff,#ddd,#E2CFC7 
      [name] => Prime Color, Secondry Color, Favorite Color 
     ) 

) 

一切顺利,直到我有限的记录。当我在tblColors中有超过150条记录时,名称键只给出有限数量的字符。没有得到完整的记录。

我想组的concat会有限制。

+2

“GROUP_CONCAT”的最大长度约为1024.您可以通过服务器变量更改此值。看到这里:http://stackoverflow.com/questions/2567000/mysql-and-group-concat-maximum-length –

+2

检查'group_concat_max_len' https://dev.mysql.com/doc/refman/5.0/en/server -system-variables.html#sysvar_group_concat_max_len –

+0

@pala_ yes你是对的我检查strlen($ name),它表示1024 – Butterfly

回答

1

在mysql数据库中增加你的group_concat_max_len。默认情况下,将其设置为1024,您可以通过查询

SET GLOBAL group_concat_max_len=100000 

SET SESSION group_concat_max_len = 1000000; 
+0

添加你的答案后,它是在我的本地服务器上工作,而不是在现场服务器上,希望我们不会有特权在现场服务器上设置这个,对此有何想法? – Butterfly

+0

运行此查询$ sql =“SET SESSION group_concat_max_len = 1000000;”在你的mysql查询之前 – Saty

+0

是的,我设置了它,并开始在本地wamp上工作,但是当我将它移动到生产服务器时,它不起作用:-( – Butterfly

1

检查group_concat_max_len的价值,增加它需要更新。

show variables like 'group_concat_max_len';