MySQL-Paket für Abfrage ist zu groß – Problem und Lösung

MySQL-Paket für Abfrage ist zu groß – Problem und Lösung

Problembeschreibung:

Fehlermeldung:

Ursache: com.mysql.jdbc.PacketTooBigException: Paket für Abfrage ist zu groß (1354 > 1024). Sie können diesen Wert auf dem Server ändern
durch Setzen der Variable 'max_allowed_packet'

MySQL begrenzt die Größe der vom Server akzeptierten Datenpakete entsprechend der Konfigurationsdatei. Manchmal ist die Größe des Datenpakets beim Einfügen, Aktualisieren oder Abfragen durch den Parameter max_allowed_packet begrenzt, was dazu führt, dass der Vorgang fehlschlägt.

Sehen Sie sich den Parameter max_allowed_packet an:

Auf dem Client ausführen:

VARIABLEN wie „%max_allowed_packet%“ anzeigen;

Die Ergebnisse sind wie folgt:

+--------------------+------------+ 
| Variablenname | Wert | 
+--------------------+--------------------+ 
| maximal zulässiges Paket | 1024 | 
+--------------------+--------------------+

Änderungsmethode:

1. Um die Konfigurationsdatei zu ändern, können Sie my.cnf (my.ini unter Windows) bearbeiten und sie im Abschnitt [mysqld] oder im Abschnitt zur MySQL-Serverkonfiguration ändern.

max_allowed_packet = 20M

Wenn my.cnf nicht gefunden werden kann, können Sie

mysql --help | grep my.cnf

Suchen Sie die Datei my.cnf.

Unter Linux befindet sich die Datei in /etc/.

2. Ändern Sie in der MySQL-Befehlszeile

setze global max_allowed_packet = 2*1024*1024*10  
//Der Wert hier ist die Anzahl der Bytes. Wenn er auf 20 M geändert wird, müssen Sie sich erneut beim Client anmelden, damit die Änderung wirksam wird.

Hinweis: Nachdem der Client den Befehl zum Ändern verwendet hat, wird dies nur vorübergehend wirksam. Nach dem Neustart von MySQL wird der ursprüngliche Wert wiederhergestellt.

Lösung für den von MySQL unter Linux gemeldeten Fehler „Paket für Abfrage ist zu groß (1040 > 1024)“

Das Projekt lief vorher normal, aber plötzlich traten in den letzten Tagen immer wieder Abfragefehler auf. Ich habe mir die Protokolle angesehen und festgestellt, dass die Fehlermeldung „Paket für Abfrage ist zu groß (1040 > 1024)“ angezeigt wurde. Sie können diesen Wert auf dem Server ändern, indem Sie die Variable „max_allowed_packet“ festlegen. Ich habe bei Baidu nach der Lösung gesucht und den Lösungsverlauf aufgezeichnet.

1. Gründe

Das von der Abfragedatenbank zurückgegebene Datenpaket ist zu groß und überschreitet den Standardwert.
Melden Sie sich bei MySQL an und geben Sie den folgenden Befehl in die Konsole ein, um den Standardwert für max_allowed_packet abzufragen. Er beträgt nur 1024.

VARIABLEN wie „%max_allowed_packet%“ anzeigen;

2. Ändern Sie die standardmäßig maximal zulässige Paketgröße

2.1 Methode 1: Befehlsmethode

(1). Geben Sie den folgenden Befehl in der MySQL-Konsole ein, um max_allowed_packet auf 20M zu setzen

setze global max_allowed_packet = 20*1024*1024;

(2) Beenden Sie MySQL, starten Sie den MySQL-Dienst neu und melden Sie sich dann bei MySQL an, um zu überprüfen, ob max_allowed_packet erfolgreich geändert wurde.

VARIABLEN wie „%max_allowed_packet%“ anzeigen;

2.2 Methode 2: Ändern der Konfigurationsdatei my.cnf
(1) Geben Sie den folgenden Befehl in die MySQL-Konsole ein, um my.cnf zu bearbeiten

sudo vi /etc/mysql/my.cnf

(2). Fügen Sie unten [mysqId] hinzu

max_allowed_packet = 20M

2.2 Beenden Sie den Editiermodus und starten Sie MySQL neu. Folgen Sie den Schritten in 2.1 (2)

3. Hinweis

Nach der Konfiguration habe ich max_allowed_packet abgefragt und festgestellt, dass es 16777216 war, was eigentlich 16*1024*1024 ist, nicht die erwarteten 20 M. Also habe ich noch einmal nachgesehen und festgestellt, dass die Speicherkapazität des Servers möglicherweise nicht ausreicht, da Java einen großen Teil davon belegt, sodass MySQL die Parameter möglicherweise automatisch zurücksetzt. Daher kann es in einigen Fällen sein, dass MySQL den Parameter „max_allowed_packet“ nach einer Weile automatisch auf den Standardwert 1024 zurücksetzt, nachdem Sie ihn geändert haben, und derselbe Fehler erneut auftritt.

<<:  So konfigurieren Sie Nginx, um den Datenverkehr basierend auf dem letzten Segment der Anforderungs-IP aufzuteilen

>>:  Angular-Leistungsoptimierung: Komponenten von Drittanbietern und Lazy-Loading-Technologie

Artikel empfehlen

Implementierungscode für mehrzeilige Textkomponenten der Vue-Faltanzeige

Faltdisplay mit mehrzeiligem Textbaustein Falten ...

Detailliertes Tutorial zur Installation von MySQL unter WINDOWS

1. Laden Sie das Installationspaket herunter -Wäh...

Reine CSS-Implementierung eines Radio- und Checkbox-Effektbeispiels

Radio und Kontrollkästchen Reines CSS zum Erziele...

Hinzufügen und Löschen von Tabelleninformationen mit Javascript

Erste Schritte mit JavaScript JavaScript ist eine...

Einige Parameterbeschreibungen von Texteingabefeldern im Webdesign

<br />In Gästebüchern, Foren und anderen Ort...

So beheben Sie den Verbindungsfehler zur Datenbank beim Start von ServerManager

Servermanager-Startfehler bei Verbindung zur Date...

Protokoll des Kompilierungs- und Installationsprozesses des Nginx-Quellcodes

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

Analyse der Fallstricke beim Rundungsvorgang der ROUND-Funktion in MySQL

Dieser Artikel veranschaulicht anhand von Beispie...

Vue+Flask realisiert Videosynthesefunktion (Drag & Drop-Upload)

Inhaltsverzeichnis Wir haben in einem früheren Ar...

Sprechen Sie über das Verständnis des CSS-Attributrands

1. Was ist eine Marge? Mit dem Rand wird die Abstä...

Verbesserung der Aktualisierungsfunktion für Zen-Codierungsressourcen

Offizielle Website: http://code.google.com/p/zen-c...

So können Sie lange Vue-Listen schnell laden

Inhaltsverzeichnis Hintergrund Hauptinhalt 1. Kom...