2016-09-27 42 views
-1

我在MySQL中動態地調整表(在php中,但每次只有1步)。MySQL Group_Concat在group_concat_max_len增加後仍然會截斷結果

我CONCAT看起來像這樣:

SELECT GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(name = "', p.name,'",te.hours, 0)) AS "', p.name, '"')) 
FROM time_entries te 
inner join projects p on p.id = te.project_id 
where te.spent_on >= '2016-07-01'; -- test date 

我回被截斷相當早(字符的一些信息刪節,但同樣#):

MAX(IF(name = "redact",te.hours, 0)) AS "redact",MAX(IF(name = "red",te.hours, 0)) AS "red",MAX(IF(name = "redactednamebutsamel",te.hours, 0)) AS "redactednamebutsamel",MAX(IF(name = "red",te.hours, 0)) AS "red",MAX(IF(name = "redactednamebutsameleng... 

現在我知道所有關於max_allowed_packetgroup_concat_max_len,在服務器上都設置爲16777216(通過在它們上運行select查詢找到,例如Select @@ max_allowed_pa​​cket;)

這裏是kicker,在得到這個權利的早期階段,我肯定返回了完整的字符串。但我根本無法重現結果。

我的代碼有一個明顯的問題嗎?我對MySQL很新穎,大部分都是通過谷歌搜索拼接而成的。

謝謝。

編輯:問題必須在別處。我能夠查看完整的字符串,並且看起來一切確實存在。謝謝。

+0

根據「group_concat_max_len」的設置方式,在重新啓動服務器時,該值可能會重置爲默認值;這可能是你的問題嗎? – Uueerdo

+0

從此開始,服務器肯定沒有重新啓動。 即使我包含「SET SESSION group_concat_max_len = 102400」或「SET @@ group_concat_max_len = 102400」,我仍然有同樣的問題。 – Dustin

+0

這是一個操作員錯誤。下一個問題 ! – Drew

回答

0

你使用什麼工具/語言?

這是很常見的,例如, phpMyAdmin在查看記錄時顯示在行視圖中截斷的文本以及僅顯示全文。

+0

這些都在MySQL工作臺中。這只是我的大型查詢的一個片段,它只是給我語法錯誤,我假設它是因爲它正在運行截斷。獨立地,我的查詢都工作:S。 – Dustin

+0

語法錯誤是查詢中的結構錯誤。它們從不會因數據返回時的截斷而導致。在這種情況下,你會得到一些其他錯誤。 – Matijs

+0

正確但返回的字符串再次連接成一個新的查詢。 如果這是問題,我能看到非截斷結果嗎?只是爲了讓我能夠休息。 – Dustin