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

Detaillierte Erklärung zur Verwendung von MySQL mysqldump

1. Einführung in mysqldump mysqldump ist ein logi...

Der Unterschied zwischen Docker Run und Start

Der Unterschied zwischen Ausführen und Starten in...

Anwendung von HTML und CSS in Flash

Anwendung von HTML und CSS in Flash: Ich habe zufä...

Detailliertes Beispiel für MySQL-Datenspeicherprozessparameter

Es gibt drei Typen von MySQL-gespeicherten Prozed...

So verwenden Sie crontab zum Hinzufügen geplanter Aufgaben in Linux

Vorwort Das Linux-System wird durch den Systemdie...

Protokoll des Kompilierungs- und Installationsprozesses des Nginx-Quellcodes

Die Installation des RPM-Pakets ist relativ einfa...

Eine kurze Diskussion über die Leistungsprobleme des MySQL-Paging-Limits

MySQL-Paging-Abfragen werden normalerweise über L...

Designbeispiele für Dropdown-Menüs und Schiebemenüs

Ich habe viele Websites gefunden, die Dropdown- od...

Verwenden Sie Typescript-Konfigurationsschritte in Vue

Inhaltsverzeichnis 1. TypeScript wird in das alte...

202 kostenlose, hochwertige XHTML-Vorlagen (2)

Nach dem vorherigen Artikel 202 kostenlose hochwe...

So stellen Sie mit Docker schnell einen Elasticsearch-Cluster bereit

In diesem Artikel werden Docker Container (orches...

Vergleich der JS-Array-Loop-Methode und der Effizienzanalyse

Array-Methoden JavaScript bietet viele Array-Meth...