MySQL"Row 30153被GROUP_CONCAT()删除"错误

Pao*_*rdo 45 mysql

我有一个下面列出的功能.当我在LIMIT设置为0,60时调用它,如下所示,它工作正常.但是,每当我将LIMIT增加到70或更高,甚至删除LIMIT时,我在调用函数时出现错误:"行30153被GROUP_CONCAT()"删除".

我已经尝试将varchar值增加到10 000但这没有帮助.据我所知,从错误来看,它们似乎没有足够的空间作为内容的变量.但正如我所提到的,我已经尝试过增加尺寸,但它没有帮助.有任何想法吗??谢谢

DELIMITER $$

DROP FUNCTION IF EXISTS `fnAlbumGetPhotoList` $$
CREATE DEFINER=`root`@`%` FUNCTION `fnAlbumGetPhotoList`(_albumId int) RETURNS varchar(2048) CHARSET utf8
BEGIN

  DECLARE _outPhotoList VARCHAR(2048);

    SET _outPhotoList = (

                          SELECT (CAST(GROUP_CONCAT(CONCAT(photoId, '|', photoFileName) separator '~') AS CHAR(10000) CHARACTER SET utf8)) AS recentPhotoList
                              FROM
                              (
                                SELECT photoId, photoFileName
                                FROM photo
                                WHERE photoAlbumId = _albumId
                                AND photoIsDisabled = 0
                                AND photoIsActive = 1
                                ORDER BY photoId DESC
                                LIMIT 0,60
                              ) as subQuery
                            );


  RETURN _outPhotoList;

END $$

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

ain*_*ain 79

您可以将group_concat_max_len变量设置为更大的值.或者也许GROUP_CONCAT(DISTINCT ...)用来缩短结果.

  • 如果其他人有这个问题,我试过`SET GLOBAL group_concat_max_len = 15000;`没有运气,但`SET group_concat_max_len = 15000;`确实有效. (33认同)
  • 谢谢 - 结果已经是截然不同的,所以我尝试在我的proc中添加它:`SET GLOBAL group_concat_max_len = 15000;`虽然没有什么区别?这是正确的用法吗? (4认同)
  • ...或`SET @@group_concat_max_len = 15000`,因为他们使用它[这里](http://bugs.mysql.com/bug.php?id=56473),@VenerableAgents? (3认同)

She*_*man 14

1)增加结果查询
SET global group_concat_max_len=15000;
OR 中字符数的限制
SET session group_concat_max_len=15000;

2)然后添加global为第一个参数以SET group_concat_max_len=15000;从结果查询中删除重复项.DISTINCT.

您的查询看起来更像是这样的:

SET session group_concat_max_len=15000;
...
    ... GROUP_CONCAT(DISTINCT CONCAT(photoId, ...)
...
)      
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档的此部分https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat