2012-03-29 8 views
19

Ich habe herausgefunden, wie Sie den Standardwert max_allowed_packet in MySQL mit SET GLOBAL ändern. Jedes Mal, wenn ich diesen Befehl verwendete, blieb der Standardwert unverändert. benutzte ich diese Befehle:SET GLOBAL max_allowed_packet funktioniert nicht

mysql --user=root --password=mypass 
mysql> SET GLOBAL max_allowed_packet=32*1024*1024; 
Query OK, 0 rows affected (0.00 secs) 
mysql> SHOW VARIABLES max_allowed_packet; 

Und dann ist das Ergebnis max_allowed_packet = 1048576 Was bin ich?

Antwort

33

Hmmmm .. Sie haben diese NOT-A-BUG scheint es scheint. :)

Wenn Sie eine globale Systemvariable ändern, wird der Wert gespeichert und für neue -Verbindungen verwendet, bis der Server neu gestartet wird. (Um eine globale Systemvariable dauerhaft festzulegen, sollten Sie sie in einer Optionsdatei festlegen.) Die Änderung ist für jeden Client sichtbar, der auf diese globale Variable zugreift. Die Änderung wirkt sich jedoch nur auf die entsprechende Sitzung Variable für Clients aus, die nach der Änderung eine Verbindung herstellen. Die Änderung der globalen Variablen hat keinen Einfluss auf die Sitzungsvariable für einen Client, der gerade verbunden ist (nicht einmal des Clients, der die Anweisung SET GLOBAL ausgibt).

Siehe auch this. Lesen Sie Shane Bester Erklärung.

Sie sollten die Datei my.ini/my.cnf ändern und den Server neu starten, damit die Einstellung max_allowed_packet wirksam wird.

+0

mit Ausnahme der "Fehler" wird geschlossen als "kein Fehler". –

+1

danke sir für ihre propmt antwort. aber ich habe versucht, mysql danach neu zu starten, immer noch bekomme ich die 1 Mb Grenze! – Breeze

+0

@ J-16 SDiZ, Yup haben sie das Problem als Not-a-bug markiert (Problem, das für uns immer noch verwirrend ist). –

1

Nur eine schnelle Möglichkeit, die Variable für jeden zu sehen, der darauf stößt. Um den Wert zurückbekommen müssen Sie

SHOW VARIABLES LIKE 'max_allowed_packet' 
+0

OP tat dies, und es gab nicht den erwarteten Wert aus den Gründen in der akzeptierte Antwort. – cbmanica

2

Nach dem Ausführen

set global max_allowed_packet=1000000000; 

Sie neu starten, um laufen mysql vor

SHOW VARIABLES LIKE 'max_allowed_packet' 

wird den neuen Wert an.

Ich habe dieses Problem beim Neustart von MySQL über die MAC OSX Systemeinstellungen und der Wert hatte sich nicht geändert. Also durch Einloggen in MySQL über die Konsole

es zu ändern und dann mySql neu zu starten schien zu arbeiten. Könnte eine OS X Eigenart gewesen sein.