2016-09-27 43 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