402 Stimmen

So ändern Sie die max_allowed_packet size

Ich habe ein Problem mit BLOB-Feldern in meiner MySQL-Datenbank - beim Hochladen von Dateien, die größer als ca. 1MB sind, erhalte ich einen Fehler Packets larger than max_allowed_packet are not allowed.

Ich habe Folgendes ausprobiert:

Im MySQL Query Browser habe ich eine show variables like 'max_allowed_packet' was mir 1048576 ergab.

Dann führe ich die Abfrage aus set global max_allowed_packet=33554432 gefolgt von show variables like 'max_allowed_packet' - erhalte ich wie erwartet 33554432.

Aber wenn ich den MySQL-Server neu starte, ist er auf magische Weise wieder bei 1048576. Was mache ich hier falsch?

Zusatzfrage: Ist es möglich, ein BLOB-Feld zu komprimieren?

13voto

xpros Punkte 1836

Wenn dieser Fehler bei der Durchführung eines Backups auftritt, max_allowed_packet kann in der Datei my.cnf insbesondere für mysqldump .

[mysqldump]
max_allowed_packet=512M

Ich erhalte immer wieder diese Fehlermeldung, während ich eine mysqldump und ich habe es nicht verstanden, denn ich hatte diese Einstellung in my.cnf unter dem [mysqld] Abschnitt. Nachdem ich herausgefunden hatte, dass ich es für [mysqldump] und ich den Wert eingestellt habe, wurden meine Sicherungen ohne Probleme abgeschlossen.

12voto

Abdul Saleem Punkte 9091

Für diejenigen, die wamp mysql server

Wamp-Tray-Symbol -> MySql -> my.ini

[wampmysqld]
port        = 3306
socket      = /tmp/mysql.sock
key_buffer_size = 16M
max_allowed_packet = 16M        // --> changing this wont solve
sort_buffer_size = 512K

Scrollen Sie bis zum Ende, bis Sie Folgendes finden

[mysqld]
port=3306
explicit_defaults_for_timestamp = TRUE

Fügen Sie die Zeile von paketgröße zwischendurch

[mysqld]
port=3306
max_allowed_packet = 16M
explicit_defaults_for_timestamp = TRUE

Prüfen Sie, ob es mit dieser Abfrage funktioniert

Select @@global.max_allowed_packet;

6voto

Suresh Punkte 1484

Dieser Fehler tritt auf, wenn Ihre Daten einen größeren als den eingestellten Wert enthalten.

Schreiben Sie einfach die max_allowed_packed=500M Sie können auch 500*1024k berechnen und diese Zahl anstelle von 500M verwenden, wenn Sie wollen.

Starten Sie nun einfach MySQL neu.

5voto

SebaGra Punkte 2311

Für alle, die MySQL auf dem Amazon RDS-Dienst betreiben, wird diese Änderung über Parametergruppen . Sie müssen ein neues PG erstellen oder ein bestehendes verwenden (abgesehen von der Standardeinstellung, die schreibgeschützt ist).

Sie sollten nach dem max_allowed_packet Parameter, ändern Sie seinen Wert und klicken Sie auf Speichern.

Wenn Sie in Ihrer MySQL-Instanz ein neues PG erstellt haben, sollten Sie das PG an Ihre Instanz anhängen (möglicherweise ist ein Neustart erforderlich). Wenn Sie ein PG geändert haben, das bereits an Ihre Instanz angehängt war, werden die Änderungen ohne Neustart auf alle Ihre Instanzen angewendet, die dieses PG angehängt haben.

4voto

cnom Punkte 2601

Viele der Antwortenden haben das Problem erkannt und bereits die Lösung angegeben.

Ich möchte nur eine andere Lösung vorschlagen, die lautet Ändern des Wertes der Glogal-Variable aus dem Tool Mysql Workbench heraus . Dies gilt natürlich nur, wenn Sie Workbench lokal auf dem Server (oder über eine SSH-Verbindung) verwenden.

Sie stellen einfach eine Verbindung zu Ihrer Instanz her und gehen ins Menü:

Server -> Optionsdatei -> Netzwerkbetrieb -> max_allowed_packed

Sie stellen den gewünschten Wert ein und müssen dann MySql-Dienst neu starten .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X