我在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