【发布时间】:2011-08-26 18:00:41
【问题描述】:
我有一个下面列出的功能。当我将 LIMIT 设置为 0,60 时调用它,如下所示,它工作正常。但是,每当我将该 LIMIT 增加到 70 或更高,甚至删除 LIMIT 时,MySQL 都会在我调用函数时出错,并出现错误:“Row 30153 was cut by 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 ;
【问题讨论】:
-
我在 Liquibase 执行存储过程后才遇到这个问题,我必须修改它。更耐人寻味的是,在 Navicat 内部对程序进行 dummy change 并执行后,错误消失了。
标签: mysql