Ho una funzione elencata di seguito. Quando lo chiamo con il LIMIT impostato a 0,60 come visto sotto, funziona perfettamente. Tuttavia, ogni volta che aumento il LIMIT a 70 o superiore, o addirittura rimuovo il LIMIT, gli errori MySQL quando chiamo la funzione con l'errore: "La riga 30153 è stata tagliata da GROUP_CONCAT()".MySQL "La riga 30153 è stata tagliata dall'errore GROUP_CONCAT()"
Ho provato ad aumentare i valori varchar a 10.000 ma ciò non aiuta. Per quanto posso capire dall'errore, il loro non sembra essere abbastanza spazio nella variabile per il contenuto. Ma come ho detto, ho provato ad aumentare le dimensioni ma non aiuta. Qualche idea?? Grazie
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 ;
Grazie - I risultati sono già distinti, così ho provato ad aggiungere questo nel mio proc: 'SET GLOBAL group_concat_max_len = 15000;' Non ha fatto la differenza però ?? È l'uso giusto? – Cheeky
Vedere il manuale (fare clic su "group_concat_max_len", è un collegamento) per la descrizione completa. 15 000 sembra un po 'piccolo, prova il valore massimo della tua piattaforma :) Leggi anche l'argomento GROUP_CONCAT, anch'esso ha alcune informazioni sul comportamento e le osservazioni sulla variabile max_allowed_packet. – ain
Oh, e sbarazzati del cast CHAR (10000) - rende i risultati più lunghi e quindi causa problemi, non li risolve! – ain