我在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_packet
和group_concat_max_len
,在服務器上都設置爲16777216(通過在它們上運行select查詢找到,例如Select @@ max_allowed_packet;)
這裏是kicker,在得到這個權利的早期階段,我肯定返回了完整的字符串。但我根本無法重現結果。
我的代碼有一個明顯的問題嗎?我對MySQL很新穎,大部分都是通過谷歌搜索拼接而成的。
謝謝。
編輯:問題必須在別處。我能夠查看完整的字符串,並且看起來一切確實存在。謝謝。
根據「group_concat_max_len」的設置方式,在重新啓動服務器時,該值可能會重置爲默認值;這可能是你的問題嗎? – Uueerdo
從此開始,服務器肯定沒有重新啓動。 即使我包含「SET SESSION group_concat_max_len = 102400」或「SET @@ group_concat_max_len = 102400」,我仍然有同樣的問題。 – Dustin
這是一個操作員錯誤。下一個問題 ! – Drew