J'importe un vidage 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 fait de très grandes insertions.
C'est sur ma machine locale, un Mac avec MySQL 5 installé à partir du package MySQL.
Où dois-je changer max_allowed_packet
pour pouvoir importer le vidage?
Y a-t-il autre chose que je devrais régler?
La simple exécution a mysql --max_allowed_packet=32M …
entraîné la même erreur.
Réponses:
Vous devrez probablement le changer pour le client (vous exécutez pour faire l'importation) ET le démon mysqld qui exécute et accepte l'importation.
Pour le client, vous pouvez le spécifier sur la ligne de commande:
Modifiez également le fichier my.cnf ou my.ini dans la section mysqld et définissez:
ou vous pouvez exécuter ces commandes dans une console MySQL connectée à ce même serveur:
(Utilisez une très grande valeur pour la taille du paquet.)
la source
max_allowed_packet
à 100 Mo?Comme l'a dit michaelpryor, vous devez le changer à la fois pour le client et le serveur démon mysqld.
Sa solution pour la ligne de commande client est bonne, mais les fichiers ini ne font pas toujours l'affaire, selon la configuration.
Alors, ouvrez un terminal, tapez mysql pour obtenir une invite mysql et lancez ces commandes:
Gardez l'invite mysql ouverte et exécutez votre exécution SQL en ligne de commande sur un deuxième terminal.
la source
Cela peut être modifié dans votre
my.ini
fichier (sous Windows, situé dans \ Program Files \ MySQL \ MySQL Server) sous la section serveur, par exemple:la source
Re my.cnf sur Mac OS X lors de l'utilisation de MySQL à partir de la distribution de paquets mysql.com dmg
Par défaut, my.cnf est introuvable.
Vous devez copier l' un
/usr/local/mysql/support-files/my*.cnf
pour/etc/my.cnf
et redémarrermysqld
. (Ce que vous pouvez faire dans le volet des préférences MySQL si vous l'avez installé.)la source
Dans etc / my.cnf, essayez de changer le max_allowed _packet et net_buffer_length en
si cela ne fonctionne pas, essayez de passer à
la source
Le correctif consiste à augmenter le max_allowed_packet du démon MySQL. Vous pouvez le faire sur un démon en cours d'exécution en vous connectant en tant que Super et en exécutant les commandes suivantes.
Ensuite, pour importer votre vidage:
la source
Sur CENTOS 6 /etc/my.cnf, sous la section [mysqld], la syntaxe correcte est:
la source
Utilisez une
max_allowed_packet
variable émettant une commande commemysql --max_allowed_packet=32M -u root -p database < dump.sql
la source
Légèrement sans rapport avec votre problème, en voici un pour Google.
Si vous n'avez pas mysqldumpé le SQL, il se peut que votre SQL soit cassé.
Je viens de recevoir cette erreur en ayant accidentellement un littéral de chaîne non fermée dans mon code. Des doigts bâclés se produisent.
C'est un message d'erreur fantastique à obtenir pour une chaîne galopante, merci pour cela MySQL!
la source
max_allowed_packet
erreur. Si cela aide pour ceux à l'avenir, j'insérais en utilisant l'API pandasdf.to_sql(...)
Parfois, définition du type:
dans my.ini ne fonctionne pas.
Essayez de déterminer le my.ini comme suit:
ou
Redémarrez ensuite le serveur:
la source
C'est un risque de sécurité d'avoir
max_allowed_packet
une valeur plus élevée, car un attaquant peut pousser des paquets de plus grande taille et planter le système.Donc, la valeur optimale
max_allowed_packet
à régler et à tester.Il vaut mieux changer en cas de besoin (en utilisant
set global max_allowed_packet = xxx
) que de l'avoir dans le cadre de my.ini ou my.conf .la source
Je travaille dans un environnement d'hébergement partagé et j'ai hébergé un site Web basé sur Drupal. Je ne peux pas non plus modifier le
my.ini
fichier ou lemy.conf
fichier.J'ai donc supprimé toutes les tables qui étaient liées à
Cache
et donc j'ai pu résoudre ce problème. Je cherche toujours une solution / un moyen parfait pour gérer ce problème.Edit - La suppression des tables a créé des problèmes pour moi, coz Drupal s'attendait à ce que ces tables soient existantes. J'ai donc vidé le contenu de ces tableaux qui ont résolu le problème.
la source
Erreur:
REQUETE:
Valeur max:
la source
Définissez max_allowed_packet sur le même (ou plus) que ce qu'il était lorsque vous l'avez vidé avec mysqldump. Si vous ne pouvez pas faire cela, refaites le vidage avec une valeur plus petite.
Autrement dit, en supposant que vous l'ayez vidé avec mysqldump. Si vous avez utilisé un autre outil, vous êtes seul.
la source