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

Einführung in die Verwendung von Ankern (benannte Anker) in HTML-Webseiten

Die folgenden Informationen sind aus dem Internet ...

Einige Fragen zu Hyperlinks

Ich freue mich sehr, an dieser Folge der Kartoffe...

Detaillierte Schritte zum Einrichten des Hosts Nginx + Docker WordPress Mysql

Umfeld Linux 3.10.0-693.el7.x86_64 Docker-Version...

Erste Schritte Tutorial für Anfänger: Domänennamenauflösung und Bindung

Wie können Sie also nach der Registrierung eines ...

Vue verwendet Openlayers zum Laden von Tiandi Map und Amap

Inhaltsverzeichnis 1. Weltkarte 1. Installieren S...

Zusätzliche Anweisungen zur Verwendung von Gettern und Aktionen in Vuex

Vorbemerkungen 1.Unterschiede zwischen Vue2.x und...

Der gesamte Prozessdatensatz der rekursiven Komponentenkapselung von Vue3

Inhaltsverzeichnis Vorwort 1. Rekursive Komponent...

Designtheorie: Menschenorientiertes Designkonzept

<br />Als sich das Denken in Ost und West sp...

So verwenden Sie ein HTML-Formular mit mehreren Beispielen

Neun einfache Beispiele analysieren die Verwendun...