513 votes

Erreur MySQL 1153 - Un paquet de données plus grand que le nombre d'octets autorisé par l'option 'max_allowed_packet' a été reçu

Je suis en train d'importer un dump MySQL et j'obtiens l'erreur suivante.

$ mysql foo < foo.sql 
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

Apparemment, il y a des pièces jointes dans la base de données, ce qui rend les insertions très volumineuses.


Ceci se passe sur ma machine locale, un Mac avec MySQL 5 installé à partir du paquetage MySQL.

Où dois-je changer max_allowed_packet pour pouvoir importer la décharge ?

Y a-t-il autre chose que je devrais régler ?

Je cours. mysql --max_allowed_packet=32M … a donné lieu à la même erreur.

0 votes

3 votes

@Muleskinner, cette question a été postée 3 ans avant celle que vous mentionnez et je le signale 4 ans après votre commentaire. :p

2 votes

Webyog.com Le lien est rompu : 404

722voto

Michael Pryor Points 11198

Vous devez probablement le modifier à la fois pour le client (que vous exécutez pour effectuer l'importation) ET pour le démon mysqld qui s'exécute et accepte l'importation.

Pour le client, vous pouvez le spécifier sur la ligne de commande :

mysql --max_allowed_packet=100M -u root -p database < dump.sql

Aussi, modifier le fichier my.cnf ou my.ini (généralement trouvé dans /etc/mysql/) sous la section mysqld et définir :

max_allowed_packet=100M

ou vous pouvez exécuter ces commandes dans une console MySQL connectée à ce même serveur :

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

(Utilisez une très grande valeur pour la taille du paquet).

0 votes

Je dispose d'un serveur avec 16 Go de RAM. max_allowed_packet à 100 Mo ?

0 votes

En passant, pour exécuter ces commandes, l'utilisateur mysql doit avoir les privilèges SUPER, sinon il échouera avec ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation

16 votes

Pour info - cela m'a aidé à résoudre une erreur DIFFERENTE - "Le serveur #2006 a disparu".

138voto

Joshua Fox Points 4505

Comme l'a dit michaelpryor, vous devez le changer pour les deux le client et le serveur démon mysqld.

Sa solution pour la ligne de commande du client est bonne, mais les fichiers ini ne font pas toujours l'affaire, selon la configuration.

Donc, ouvrez un terminal, tapez mysql pour obtenir une invite mysql, et tapez ces commandes :

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000; 

Gardez l'invite mysql ouverte, et exécutez votre ligne de commande SQL sur un second terminal

2 votes

J'ai résolu le problème ; l'importation que je fais est unique et je ne peux pas facilement changer la configuration. Cela a très bien fonctionné :D

49voto

GHad Points 4131

Cela peut être modifié dans votre my.ini (sous Windows, situé dans \Program Fichiers \MySQL\MySQL Server) sous la section serveur, par exemple :

[mysqld]

max_allowed_packet = 10M

5 votes

Sur un mac, le fichier est manifestement situé ailleurs.

2 votes

Sûr, mais la configuration est toujours quelque part, même si je ne connais pas l'endroit exact.

1 votes

Pour moi, dans Fedora 20 avec MariaDB, placer ce paramètre à la fin de /etc/my.cnf.d/server.cnf a fait l'affaire. J'ai dû redémarrer le service bien sûr... sudo nano systemctl restart mariadb.service

18voto

kch Points 25855

Re my.cnf sur Mac OS X lors de l'utilisation de MySQL à partir de la distribution du paquet dmg mysql.com

Par défaut, my.cnf est introuvable.

Vous devez copier une des /usr/local/mysql/support-files/my*.cnf a /etc/my.cnf et redémarrer mysqld . (Ce que vous pouvez faire dans le panneau de préférences MySQL si vous l'avez installé).

0 votes

La configuration par défaut en place pour OSX semble être my-medium.cnf, bien que la taille max_allowed_packet soit la même dans my-large.cnf ... jusqu'à ce que vous commenciez à changer les choses :)

0 votes

Dans mon cas, /usrl/local/mysql/my.cnf n'a pas fonctionné jusqu'à ce que je le copie dans /etc/my.cnf.

17voto

Primoz Rome Points 1323

La solution est d'augmenter le max_allowed_packet du démon MySQL. Vous pouvez effectuer cette opération sur un démon en cours d'exécution en vous connectant en tant que Super et en exécutant les commandes suivantes.

# mysql -u admin -p

mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)

Puis d'importer votre dump :

gunzip < dump.sql.gz | mysql -u admin -p database

0 votes

Quelle version de MySQL utilisez-vous ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X