Laravel 5 中的 group_concat() 问题

Posted

技术标签:

【中文标题】Laravel 5 中的 group_concat() 问题【英文标题】:Issue with group_concat() in Laravel 5 【发布时间】:2015-09-14 04:04:22 【问题描述】:

我在Laravel 5 模型的查询中使用group_concat()。在这方面我使用这种说法。

DB::statement('SET GLOBAL group_concat_max_len = 1000000');

它在本地运行良好,但在实时在线服务器中无法运行。

谁能说说问题出在哪里??

【问题讨论】:

【参考方案1】:

还有几个问题/答案可以帮助我们帮助您:

您的托管服务提供商是否允许修改全局变量? 您的用户权限是否具有“SET”权限? 查询是否在您的非本地环境中引发任何类型的错误?

更好的检查是使用数据库上的后续检查请求来查看事务是否已成功处理,因为如果您已将其设置为全局,它应该适用于所有会话,即使是未由您的代码执行的会话。

SHOW VARIABLES LIKE 'group%';

应该指明当前配置的组连接最大长度。

祝你好运。

【讨论】:

感谢 Dan Belden 的宝贵意见。这个正在工作 DB::statement('SET SESSION group_concat_max_len = 1000000'); 在这种情况下,如果它仍然不起作用,“1000000”对于您的数据来说可能仍然太小?一个很好的指标是 group_concat 列是否被截断... 感谢 Dan Belden 的宝贵意见。很长一段时间以来,我一直在寻找更好的 group_concat 替代品。但是我没有找到更好的 group_concat 替代品。你能在这方面帮助我吗?? 我在最近的一个项目中遇到了这个问题,最简单的解决方案是动态计算和设置,组concat值在SELECT之前,这样就不会发生截断。但这对服务器有内存影响。如果不查看您尝试使用 GROUP_CONCAT() 方法的查询,就很难提供更多支持。在这种情况下,我建议使用该查询打开另一个问题,并询问如何计算 group_concat 值,并且有人可以在 SQL 频道中为您提供帮助。祝你好运,mysql 是一只狡猾的野兽。 感谢 Dan Belden 的宝贵意见。我通过***尝试了很多,但要么人们不回答这个问题,要么他们没有理解,或者他们建议我使用 GROUP_CONCAT() 。甚至***都会阻止我问问题。实际上,我想从表中获取日期明智的结果,我尝试将结果与相关的 Date 一起选择。你能在这方面帮助我吗??

以上是关于Laravel 5 中的 group_concat() 问题的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:带有 GROUP_CONCAT 和 DISTINCT ON 的 selectRaw

如何在 Laravel-5 中构建子查询 [重复]

mysql 查询,如何使用 GROUP_CONCAT 获得前 5 名下载

SQL 中的 STUFF 等效函数(MySQL 中的 GROUP_CONCAT / Oracle 中的 LISTAGG)

Mysql 5.6.12 Group_concat 与内部连接问题

MySQL GROUP_CONCAT 与 Nulls