Ich bin kürzlich auf ein Problem bei der Arbeit gestoßen:
Ein Teil der Logikverarbeitung in unserem System ist mithilfe gespeicherter Prozeduren implementiert, aber eines Tages meldete der Kundendienst, dass die Bestellung nicht aufgegeben werden konnte. Ich habe die Produkte überprüft Grundlegende Ressourcen, kein Problem.
Die gespeicherte Prozedur zum Aufgeben einer Bestellung enthält zwei Codezeilen:
1 declare _err int default 0;2 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;3 DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' set _err=2;
Nach der Ausführung der gespeicherten Prozedur gibt die Variable _err 1 zurück. Sie Um das Problem zu finden, kann nur die gespeicherte Prozedur debuggt werden. Beim Debuggen des folgenden Absatzes habe ich festgestellt, dass _err nach der Ausführung dieser SQL aufgrund der Daten in der temporären Tabelle
tmp_ord1 select group_concat(concat(@room_name,',',run_date,',',total_count) separator '|') into @order_desc from tmp_order_detail order by run_date;
wurde mehr, also vermutete ich, dass es ein Problem mit group_concat war, also reduzierte ich die Daten in der temporären Tabelle um die Hälfte und stellte fest, dass es erfolgreich war, also vermutete ich, ob group_concat eine Längenbeschränkung hatte, und googelte es, und tatsächlich.
Über die Funktion „group_concat“:
group_concat: Die standardmäßige verbindbare Länge beträgt 1024; wenn die maximale Länge festgelegt wurde, wird diese Länge überschritten Auf diese Länge gekürzt;
Nach der Verwendung von group_concat in der Abfrageanweisung (select) wird das Limit ungültig
Lösung:
1, Ändern Sie die MySQL-Konfigurationsdatei:
#需要设置的长度 group_concat_max_len = 5120
2. Sie können auch SQL-Anweisungseinstellungen verwenden:
SET GLOBAL group_concat_max_len=5120;SET SESSION group_concat_max_len=5120;
Ich habe die zweite Methode oben in der gespeicherten Prozedur verwendet, um die gespeicherte Prozedur auszuführen, OK, Erfolg!
Frei von der Arbeit (heute ist Sonntag)! ! !
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für die Verwendung der Funktion group_concat() in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!