Paket für Abfrage ist zu groß MySQL?


13.02.2024, 11:00

Hallo,

habe das Problem nun über Umwege behoben, trotzdem vielen Dank !

3 Antworten

Ich würde mir mal Gedanken darüber machen, warum so ein großes Paket notwendig werden sollte.

A communication packet is a single SQL statement sent to the MySQL server, a single row that is sent to the client, or a binary log event sent from a replication source server to a replica.

Du hast das DBMS nach der Änderugn sicherheitshalber neu gestartet?

P.S.:

Both the client and the server have their own max_allowed_packet variable, so if you want to handle big packets, you must increase this variable both in the client and in the server.
JulianOnFire 
Fragesteller
 12.02.2024, 08:47

Moin,

Keiner versteht warum das Paket so groß sein soll, dort sind lediglich ein paar Daten, zu Umsätzen von Beratern drin, bis zum Jahre 2005 glaub ich. 

Was heißt lediglich; das sind an für sich schon einige Daten, aber keine -> 1GB +.

Die Daten werden alle 3 Tage durch einen Dump aktualisiert. 

Also dass ist nicht einmal die Hauptdatenbank der Firma...

auf diese Datenbank werden nur die Umsätze, Kunden usw. dokumentiert, die dann in einer von mir programmierten C# Anwendung, als Tages/Jahresstatistik dargestellt werden sollen, wobei jeder Berater auf seine Umsätze zugriff hat.

Ich hatte die MySQL Datenbank damals leider nicht selbst aufgebaut (da war ich noch zu klein für :) ).

Würde ja eine neue DB anlegen, dann wäre das Problem gelöst. Dann wären allerdings auch alle Daten weg aus den vergangenen Jahren, was natürlich nicht geht. Das ist schon alles ziemlich ärgerlich.

Nachdem ich die max_allowed_packet-Einstellung erhöht habe, habe ich natürlich neu gestartet und danach nochmal überprüft ob die Einstellung auch wirklich gespeichert wurde. Das war immer positiv.

Deswegen bin ich langsam echt ratlos und verzweifelt und bräuchte mal einen der mir dabei helfen könnte. :(

0
KarlRanseierIII  12.02.2024, 12:50
@JulianOnFire

Hast Du mal auf Clientseite nach der entsprechenden Einstellung gesucht?

Ansonsten nehme statt etwas visuellem wie DBeaver einfach mal mysql (CLI-Tool) mit der entsprechenden Option, exemplarisch:

mysqld --max_allowed_packet=128M

Sonst müßtest Du halt ein brauchbares Log von DBeaver haben, welches jedes Statement dokumentiert und bei welchem es aussteigt.

https://dbeaver.com/docs/dbeaver/Log-files/

Kann ja auch noch sein, daß irgendwas bei Java im Connector schief läuft o.ä. .

Sofern die Datenbank keine BLOBs nutzt, scheinen bereits Paketgrößen über 64K eher unwahrscheinlich. (Queries mit großer Rückgabe werden ja zeilenweise übertragen).

0

Mysql hat die Funktion explain um dir anzeigen zu lassen, wie mit deinem Query umgegangen wird.

Siehe https://dev.mysql.com/doc/refman/8.0/en/using-explain.html

Falls du da selber nicht durchblickst, schicke deinen problematischen Query mit explain davor an die Datenbank und poste hier den Output

Ansonsten - Fehler Logs sind Dein Freund!

"Obwohl ich die max_allowed_packet-Einstellung auf das Maximum von 1GB gesetzt habe" - offensichtlich ja nicht, da die Fehlermeldung ja etwas anderes sagt... .

JulianOnFire 
Fragesteller
 11.02.2024, 22:21

also bei der Abfrage;

SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet';

kommt als gespeicherte Value: 1073741824 raus...

also offensichtlich ja schon richtig gesetzt

0