【问题标题】:MySQL Group_Concat still truncating results after group_concat_max_len is increased在 group_concat_max_len 增加后 MySQL Group_Concat 仍然截断结果
【发布时间】:2016-09-27 17:33:06
【问题描述】:

我在 MySQL 中动态旋转一个表(在 php 中很好,但一次只有一步)。

我的 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 @@max_allowed_pa​​cket;)

这是关键,在正确处理此问题的早期阶段,我肯定返回了完整的字符串。但我根本无法重现结果。

我的代码是否存在明显问题?我对 MySQL 还很陌生,其中大部分是从谷歌搜索中拼凑起来的。

谢谢。

编辑:问题必须在其他地方。我能够查看完整的字符串,似乎一切都在那里。谢谢。

【问题讨论】:

  • 根据group_concat_max_len 的设置方式,该值可能会在服务器重新启动时重置为默认值;这可能是你的问题吗?
  • 服务器自开始以来肯定没有重新启动。即使我包含 SET SESSION group_concat_max_len = 102400SET @@group_concat_max_len = 102400 我仍然遇到同样的问题。
  • 这是操作员错误。下一个问题!

标签: mysql truncate group-concat


【解决方案1】:

您使用什么工具/语言?

这很常见,例如phpMyAdmin 在行视图中显示被截断的文本,在查看记录时仅显示全文。

【讨论】:

  • 这一切都在 MySQL 工作台中。这只是我的大型查询的一个 sn-p,它只是给我语法错误,我假设是因为它正在运行截断。独立地,我的查询都有效:S.
  • 语法错误是查询中的结构错误。它们绝不是由数据返回中的截断引起的。在这种情况下,您会收到其他错误。
  • 正确,但是返回的字符串再次被连接到一个新的查询中。如果这是问题所在,我是否可以看到未截断的结果?只是为了让我能够休息一下。
  • 我找到了视图。你是对的,我的错误在其他地方。谢谢!
猜你喜欢
  • 2012-08-13
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 2012-08-08
  • 2010-11-03
相关资源
最近更新 更多