web-dev-qa-db-fra.com

SET GLOBAL max_allowed_packet ne fonctionne pas

J'ai découvert comment modifier la valeur par défaut de max_allowed_packet dans MySQL en utilisant SET GLOBAL. Cependant, chaque fois que j'utilisais cette commande, la valeur par défaut restait intacte! J'ai utilisé ces commandes:

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;

Et puis le résultat est max_allowed_packet = 1048576. Qu'est-ce qui me manque?

25
Breeze

Hmmmm .. Vous avez touché ce NOT-A-BUG il semble. :)

Si vous modifiez une variable système globale, la valeur est mémorisée et utilisée pour les nouvelles connexions jusqu'au redémarrage du serveur. (Pour rendre permanent un paramètre de variable système globale, vous devez le définir dans un fichier d'options.) La modification est visible par tout client qui accède à cette variable globale. Toutefois, la modification affecte la variable de session correspondante uniquement pour les clients qui se connectent après la modification. Le changement de variable globale n'affecte pas la variable de session pour tout client actuellement connecté (pas même celui du client qui émet l'instruction SET GLOBAL).

Reportez-vous aussi this . Lisez l'explication de Shane Bester.

Vous devez modifier le fichier my.ini/my.cnf et redémarrer le serveur pour que le paramètre max_allowed_packet prenne effet.

40
Ashwin A

Après avoir couru

set global max_allowed_packet=1000000000;

vous devez redémarrer mysql avant

SHOW VARIABLES LIKE 'max_allowed_packet'

affichera la nouvelle valeur.

J'ai ce problème lors du redémarrage de mysql via les préférences système MAC OSX et la valeur n'avait pas changé. Donc, en vous connectant à mysql via la console

mysql -u root -p

le changer puis redémarrer mySql semblait fonctionner. Peut-être que c'était une bizarrerie OS X.

5
John Cogan

Juste un moyen rapide de voir la variable pour quiconque rencontre cela. Pour récupérer la valeur, vous devez exécuter

SHOW VARIABLES LIKE 'max_allowed_packet'
1
BeardedGeek

Pour ceux qui ont une configuration MariaDb, le problème pourrait être que la variable max_allowed_packet est remplacée par un fichier de configuration appelé plus tard.

Dans mon cas, j'ai essayé d'importer une base de données et le serveur m'a répondu: ERREUR 2006 (HY000) à la ligne 736: le serveur MySQL est parti

J'ai découvert que le fichier:

/etc/mysql/mariadb.conf.d/50-server.cnf

s'appelle plus tard

/etc/mysql/conf.d/mysql.cnf

J'ai essayé de changer continuellement dans le fichier "mysql.cnf" mais la valeur a été écrasée dans "50-server.cnf".

La solution consiste donc à saisir le fichier

/etc/mysql/mariadb.conf.d/50-server.cnf

et au lieu de "max_allowed_packet = 16M" mettez la valeur souhaitée comme exemple "max_allowed_packet = 64M"

0
Cuarcuiu