Perfekte Lösung für das Problem, dass Daten abgeschnitten werden, wenn die Funktion „group concat“ in Mysql5.7 verwendet wird

Perfekte Lösung für das Problem, dass Daten abgeschnitten werden, wenn die Funktion „group concat“ in Mysql5.7 verwendet wird

Vorgestern stieß ich in der Produktionsumgebung auf ein Problem: Die mit der Funktion GROUP_CONCAT ausgewählten Daten wurden abgeschnitten und die maximale Länge überschritt 1024 Bytes nicht. Zuerst dachte ich, es liege an einem Problem mit dem Navicat-Client selbst, der die Feldlänge begrenzt. Später habe ich absichtlich ein Feld mit einer Länge von über 1024 Bytes erneut eingefügt, aber Navicat konnte es vollständig anzeigen, sodass das Problem mit Navicat ausgeschlossen wurde.

Dann fiel mir die vertraute Zahl 1024 ein. Könnte es sein, dass das C++-Framework beim Empfangen der von MySQL über den Socket übertragenen Daten verarbeitet wurde? Daher habe ich dieses Feld manuell in das Protokoll gedruckt und festgestellt, dass es auch dann noch vollständig angezeigt werden kann, wenn die Datenlänge 1024 Byte überschreitet.

1. Finden Sie die Ursache

An diesem Punkt können wir nur von SQL-Anweisungen ausgehen. Ich habe online nach Fragen zur GROUP_CONCAT-Datenkürzung gesucht und alle Antworten verwiesen auf den Parameter group_concat_max_len, dessen Standardwert genau 1024 beträgt. Sie können diesen Standardwert mit dem folgenden Befehl direkt in der Datenbank anzeigen:

mysql> Variablen wie „group_concat_max_len“ anzeigen;
+----------------------+----------+
| Variablenname | Wert |
+----------------------+----------+
| Gruppen-Concat_Max_Länge | 1024 |
+----------------------+----------+
1 Zeile im Satz (0,00 Sek.)
MySQL>

Im offiziellen MySQL-Handbuch wird es wie folgt definiert: Die maximal zulässige Ergebnislänge in Bytes für die Funktion GROUP_CONCAT The maximum permitted result length in bytes for the GROUP_CONCAT() function .

2. Problemlösung

Passen Sie group_concat_max_len einfach auf den Maximalwert an. Das offizielle MySQL 5.7-Handbuch enthält die folgende Definition:

Da die virtuelle Testmaschine MySQL5.7.19 von BZ eine 64-Bit-Maschine ist, kann group_concat_max_len mit den folgenden zwei Methoden auf den Maximalwert konfiguriert werden:

#### Methode 1: Ändern Sie die MySQL-Konfigurationsdatei my.cnf und fügen Sie group_concat_max_len = 18446744073709551615 im Knoten [mysqld] hinzu
#### Methode 2: Stellen Sie die Konsole direkt so ein, dass die Wirkung sofort eintritt -- [Erforderlicher Vorgang] Ändern Sie die globale Konfiguration----
GLOBAL festlegen group_concat_max_len=18446744073709551615;
- [Optionale Operation] Die Konfiguration wird in der aktuellen Sitzung sofort wirksam. Andere angemeldete Sitzungsterminals müssen neu gestartet werden, damit die Konfiguration wirksam wird.
SETZEN SIE DIE SITZUNG group_concat_max_len=18446744073709551615;

3 Testergebnisse

Hier wird die zweite Methode verwendet. Durch Ausführen SELECT LENGTH(GROUP_CONCAT(Fremark)) FROM account; und Vergleichen der Ergebnisse können wir feststellen, dass das Problem der Datenkürzung bei Verwendung von GROUP_CONCAT in MySQL 5.7 erfolgreich gelöst wurde.

Zusammenfassen

Das Obige ist die perfekte Lösung für das Problem der Datenkürzung bei Verwendung der Group-Concat-Funktion in Mysql5.7. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • So ändern Sie die Längenbeschränkung von group_concat in MySQL
  • Eine kurze Erläuterung der Sortiermethode der Funktion group_concat() in MySQL
  • Zusammenfassung der Verwendung der MySQL-Funktion group_concat()
  • Analyse von Fallen bei der Verwendung der MySQL-Statistikfunktion GROUP_CONCAT
  • mysql verwendet group_concat(), um mehrere Datenzeilen in einer Zeile zusammenzuführen
  • Tiefgreifendes Verständnis der group_concat-Funktion in MySQL
  • So verwenden Sie die Mysql GROUP_CONCAT()-Funktion
  • MySQL führt mehrere Datenzeilen basierend auf der Funktion group_concat() zusammen

<<:  Einige Details zu Semikolons in JavaScript

>>:  Apache Spark 2.0-Jobs brauchen lange, bis sie abgeschlossen sind

Artikel empfehlen

So behandeln Sie den vom Linux-System gemeldeten Fehler tcp_mark_head_lost

Problembeschreibung Kürzlich meldete ein Host die...

Zusammenfassung der grundlegenden Verwendung von JS-Arrays

Vorwort Arrays sind eine spezielle Art von Objekt...

Analyse und Lösungen für Probleme bei der Verwendung von Label-Tags

Ich habe kürzlich bei einer bestimmten Aufgabe das...

Grafisches Tutorial zur Installation von MySQL 5.5.27

1. Installation von MySQL 1. Öffnen Sie die herun...

MySQL sollte niemals Update-Anweisungen wie diese schreiben

Inhaltsverzeichnis Vorwort Ursache Phänomen warum...

Verwendung der MySQL SHOW STATUS-Anweisung

Um die Leistung von MySQL anzupassen und den Dien...

So überwachen und löschen Sie abgelaufene Sitzungen in Tomcat

Vorwort Ich habe zufällig entdeckt, dass die halb...

So stellen Sie Tencent Cloud Server von Grund auf bereit

Da dies mein erster Beitrag ist, weisen Sie mich ...

Detaillierte Erklärung der Funktion und Verwendung der KeepAlive-Komponente in Vue

Vorwort Während des Vorstellungsgesprächs erwähne...

Vue realisiert den Prozentbalkeneffekt

In diesem Artikel wird der spezifische Code von V...

Anwendungsszenario für die MySQL-Konfiguration mehrerer Instanzen

Inhaltsverzeichnis Mehrere MySQL-Instanzen Übersi...