2012-03-29 19 views
19

Ho scoperto come modificare il valore predefinito di max_allowed_packet in MySQL utilizzando SET GLOBAL. Tuttavia, ogni volta che ho usato questo comando, il valore predefinito è rimasto inalterato! Ho usato questi comandi:SET GLOBAL max_allowed_packet non funziona

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; 

E poi il risultato è max_allowed_packet = 1048576. Che cosa mi manca?

risposta

33

Hmmmm .. Hai colpito questo NOT-A-BUG sembra. :)

Se si modifica una variabile di sistema globale, il valore viene memorizzato e utilizzato per le nuove connessioni fino al riavvio del server. (Per rendere permanente la variabile di sistema globale , è necessario impostarla in un file di opzioni.) La modifica è visibile a qualsiasi client che accede a tale variabile globale. Tuttavia, la modifica influisce sulla corrispondente variabile della sessione solo per i client che si connettono dopo la modifica. La modifica della variabile globale fa sì che non influenzi la variabile di sessione per qualsiasi client attualmente connesso (nemmeno quello del client che emette l'istruzione SET GLOBAL).

Vedere anche this. Leggi la spiegazione di Shane Bester.

È necessario passare dal file my.ini/my.cnf e riavviare il server affinché l'impostazione max_allowed_packet abbia l'effetto.

+0

tranne che il "bug" è chiuso come "non un bug". –

+1

grazie signore per la vostra risposta propmt. ma dopo aver provato a riavviare mysql, sto ancora ottenendo il limite di 1 Mb! – Breeze

+0

@ J-16 SDiZ, Yup hanno contrassegnato il problema come Not-a-bug (Problema, che è ancora fonte di confusione per noi). –

1

Solo un modo rapido per vedere la variabile per chiunque si imbatta in questo. Per ottenere il valore di nuovo è necessario eseguire

SHOW VARIABLES LIKE 'max_allowed_packet' 
+0

OP, e non ha restituito il valore previsto per i motivi delineati nel risposta accettata – cbmanica

2

Dopo aver eseguito

set global max_allowed_packet=1000000000; 

è necessario riavviare mysql prima

SHOW VARIABLES LIKE 'max_allowed_packet' 

mostrerà il nuovo valore.

Ho questo problema quando si riavvia mysql tramite le preferenze di sistema MAC OSX e il valore non è stato modificato. Quindi, collegandosi a mysql tramite console

mysql -u root -p 

cambiandolo e riavviando mySql sembrava funzionare. Potrebbe essere una peculiarità di OS X però.