2015-04-07 39 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';