Ein Kommunikationspaket ist eine einzelne an den MySQL Server geschickte SQL-Anweisung oder eine einzelne an den Client geschickte Zeile.
Das größtmögliche Paket, das von einem oder an einen MySQL 5.1 Server oder -Client übermittelt werden kann, ist 1 Gbyte groß.
Wenn ein MySQL-Client oder der mysqld-Server
ein Paket empfängt, dessen Größe
max_allowed_packet
Bytes übersteigt, löst
er einen Packet too large
-Fehler aus und
schließt die Verbindung. Manche Clients melden auch einen
Lost connection to MySQL Server during
query
-Fehler, wenn das Kommunikationspaket zu groß
ist.
Da Client und Server jeweils ihre eigene
max_allowed_packet
-Variable haben, müssen
Sie diese auf beiden Seiten erhöhen, wenn Sie größere Pakete
verschicken möchten.
Der Standardwert der
max_allowed_packet
-Variable des
Clientprogramms mysql ist 16 Mbyte. Um ihn zu
erhöhen, starten Sie mysql wie folgt:
mysql> mysql --max_allowed_packet=32M
So wächst die Paketgröße auf 32 MB.
Die maximale max_allowed_packet
-Größe des
Servers ist 1 MB. Sie können sie heraufsetzen, wenn der Server
umfangreiche Anfragen verarbeiten muss (beispielsweise mit
großen BLOB
-Spalten). Um diese Variable auf
16 Mbytezu setzen, starten Sie den Server wie folgt:
mysql> mysqld --max_allowed_packet=16M
Sie können max_allowed_packet
auch mit einer
Optiondatei einstellen. Um beispielsweise die Paketgröße für
den Server auf 16 Mbytezu setzen, fügen Sie einer Optionsdatei
folgende Zeilen hinzu:
[mysqld] max_allowed_packet=16M
Der Wert dieser Variablen lässt sich ohne Sicherheitsrisiko erhöhen, da der zusätzliche Speicher nur bei Bedarf zugewiesen wird. So weist beispielsweise mysqld nur dann mehr Speicher zu, wenn Sie eine lange Anfrage haben oder wenn mysqld eine große Ergebniszeile zurückgeben muss. Der kleine Standardwert dieser Variablen ist eine Vorsichtsmaßnahme, um unkorrekte Pakete zwischen Client und Server abzufangen und zu gewährleisten, dass Sie keine Speicherplatzprobleme bekommen, weil Sie versehentlich zu große Pakete verwenden.
Es können auch seltsame Dinge mit großen Paketen passieren,
wenn Sie umfangreiche BLOB
-Werte benutzen,
aber mysqld zu wenig Speicher gegeben haben,
um mit der Anfrage umzugehen. Wenn Sie den Verdacht haben, dass
dies der Fall ist, müssen Sie ulimit -d
256000 am Anfang des
mysqld_safe-Skripts hinzufügen und
mysqld neu starten.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.