Augmenter la taille max_allowed_packet dans MySQL

TL;DR — Pour augmenter la taille max_allowed_packet de façon permanente, ajoute max_allowed_packet=1G sous [mysqld] dans my.cnf et redémarre MySQL. Pour un correctif immédiat sans redémarrage, exécute SET GLOBAL max_allowed_packet=1073741824; dans un client MySQL. Confirme la modification avec SHOW VARIABLES LIKE 'max_allowed_packet';.

Visual representation: Increase max_allowed_packet Size in MySQL. Image created by Dali.

Quand MySQL reçoit une requête dont le paquet de données dépasse la valeur max_allowed_packet, il renvoie une erreur « Packet too large » et ferme la connexion. C’est une erreur MySQL courante dans les environnements WordPress — elle apparaît lors des erreurs de taille de paquet MySQL pendant le push, des paquets trop volumineux lors du clonage, des importations de grandes bases de données et des migrations de sites. La valeur par défaut est faible par rapport aux besoins des grands sites WordPress, mais l’augmenter est simple une fois que tu as identifié la bonne méthode pour ton environnement d’hébergement.

Par exemple, si la restauration de sauvegarde WP STAGING échoue en raison d’une taille de paquet trop petite, le message d’erreur indique la taille de la requête problématique afin que tu puisses ajuster max_allowed_packet en conséquence. Dans la version actuelle de WP STAGING, le plugin régule et exécute les requêtes de base de données de façon dynamique en fonction de la taille maximale de paquet autorisée par ton serveur, mais la limite MySQL sous-jacente s’applique toujours aux importations directes et aux outils tiers.

Tu as deux options pour modifier la taille max_allowed_packet MySQL : une modification permanente dans le fichier de configuration MySQL et une modification temporaire via SQL — les deux sont expliquées ci-dessous.

Ce que contrôle max_allowed_packet

La variable système max_allowed_packet définit la taille maximale d’un seul paquet de communication entre le client MySQL et le serveur. Quand une requête, une ligne de résultat ou une définition de routine stockée dépasse cette limite, MySQL met fin à la connexion et enregistre une erreur.

Symptômes courants :

  • « Packet too large » — MySQL rejette la requête immédiatement.
  • « MySQL server has gone away » — la connexion est interrompue lors d’une importation longue.
  • Échecs de push ou de restauration dans WP STAGING lorsque le site contient de grandes révisions d’articles, des valeurs d’options sérialisées volumineuses ou des métadonnées d’images stockées en tant que post meta.
  • Erreurs lors de la restauration mysqldump ou d’une importation phpMyAdmin.

Dans notre file d’assistance, le déclencheur le plus courant est un push WP STAGING incluant de grandes bibliothèques d’images ou des révisions d’articles stockées en tant que post meta. Nous avons également vu ce problème bloquer des migrations — augmenter max_allowed_packet avant de migrer vers un nouvel hébergeur permet d’éviter des importations échouées en cours de transfert.

Quelle méthode utiliser ?

Ton environnement Meilleure méthode
VPS ou serveur dédié avec accès SSH Modifier my.cnf — permanent
Hébergement mutualisé (sans SSH) Contacter ton hébergeur ; phpMyAdmin peut inspecter la valeur actuelle mais pas la modifier de façon permanente
AWS RDS pour MySQL Modifier un groupe de paramètres de base de données dans la console AWS
DigitalOcean Managed MySQL Définir via l’onglet « Configuration » dans le panneau de contrôle
Besoin d’un correctif immédiat sans redémarrage Commande SQL SET GLOBAL — temporaire, se réinitialise au redémarrage

Si tu n’es pas sûr du fichier de configuration que MySQL lit, exécute mysql --verbose --help | grep my.cnf dans un terminal pour voir l’ordre de recherche complet.

Comment définir max_allowed_packet de façon permanente

Une modification permanente survit aux redémarrages du serveur MySQL. La méthode dépend de ton environnement d’hébergement.

VPS ou serveur dédié : modifier my.cnf

  1. Ouvre my.ini (Windows) ou my.cnf (Linux/macOS) dans le répertoire d’installation du serveur MySQL. Sur la plupart des systèmes Linux, le fichier se trouve à /etc/mysql/my.cnf ou /etc/my.cnf. Pour la configuration du serveur MySQL via la ligne de commande, vérifie d’abord le chemin exact avec mysql --verbose --help | grep my.cnf.
  2. Repère la section [mysqld]. La directive doit être placée sous [mysqld], et non sous [mysql] ou [client] — la placer dans la mauvaise section est la raison la plus fréquente pour laquelle le correctif semble fonctionner mais n’a aucun effet.
  3. Trouve ou ajoute la ligne max_allowed_packet. Pour définir la valeur à 1 Go :
[mysqld]
max_allowed_packet=1G
  1. Enregistre le fichier, puis redémarre MySQL :
sudo systemctl restart mysql
  1. Vérifie la nouvelle valeur :
SHOW VARIABLES LIKE 'max_allowed_packet';

Hébergement mutualisé : inspecter via phpMyAdmin

Sur un hébergement mutualisé sans accès SSH, tu peux vérifier la valeur actuelle de max_allowed_packet en accédant à phpMyAdmin → Variables et en recherchant max_allowed_packet. Pour l’augmenter de façon permanente, contacte ton hébergeur — c’est un paramètre au niveau du serveur qui nécessite un accès administratif en dehors du panneau de contrôle mutualisé.

Bases de données gérées : AWS RDS et DigitalOcean

Les services MySQL gérés dans le cloud exposent la variable via leurs panneaux de contrôle plutôt que via un fichier de configuration :

  • AWS RDS pour MySQL — ouvre l’instance de base de données dans la console AWS, accède à son groupe de paramètres associé et définis max_allowed_packet. Applique le groupe de paramètres mis à jour et redémarre l’instance pour que la modification prenne effet.
  • DigitalOcean Managed MySQL — accède à l’onglet Configuration de ton cluster de base de données et mets à jour max_allowed_packet depuis cet endroit.

Pour les deux plateformes, définis la valeur avant d’effectuer une grande importation ou migration. Consulte augmenter max_allowed_packet avant de migrer pour une liste de contrôle pré-vol de migration.

Comment définir max_allowed_packet temporairement

La variable max_allowed_packet peut être définie globalement en exécutant une commande SQL. Cela prend effet immédiatement — sans redémarrage nécessaire — mais la valeur se réinitialise au redémarrage du serveur MySQL. Effectue toujours ensuite la modification permanente dans my.cnf si tu as besoin que la modification persiste.

Cependant, si tu ne la modifies pas dans le fichier my.ini, la valeur se réinitialisera toujours au redémarrage du serveur, même si tu la définis globalement.

Pour modifier le paquet maximum autorisé pour tous les utilisateurs à 1 Go jusqu’au redémarrage du serveur :

SET GLOBAL max_allowed_packet=1073741824;

Vérification immédiate :

SHOW VARIABLES LIKE 'max_allowed_packet';

Cette méthode est utile pour débloquer des erreurs max_allowed_packet lors de la restauration en cours, ou pour tester la valeur correcte avant de la valider dans le fichier de configuration.

Que faire si le correctif ne prend pas effet

Si SHOW VARIABLES LIKE 'max_allowed_packet'; renvoie toujours l’ancienne valeur après ta modification, parcours cette liste de contrôle :

  1. Mauvaise section de configuration. La directive doit être sous [mysqld]. Ouvre le fichier et confirme que l’en-tête de section est directement au-dessus de la ligne max_allowed_packet.
  2. Mauvais fichier de configuration. MySQL lit plusieurs fichiers dans un ordre spécifique et la dernière valeur correspondante l’emporte. Vérifie le chemin de recherche réel :
mysql --verbose --help | grep my.cnf
  1. MySQL n’a pas été redémarré. Confirme que le service a redémarré avec succès :
sudo systemctl status mysql
  1. Fichier non enregistré ou illisible. Vérifie que le fichier a été enregistré et que MySQL a les droits de lecture nécessaires.
  2. Nœuds répliqués. Dans un environnement répliqué, SET GLOBAL s’applique uniquement au nœud auquel tu es connecté. Chaque réplique nécessite sa propre mise à jour du fichier de configuration.
  3. Limite côté client. Certains clients de base de données définissent max_allowed_packet au moment de la connexion. Si la valeur du client est inférieure à celle du serveur, la limite du client s’applique indépendamment du paramètre serveur.

Nous avons vu le correctif échouer silencieusement lorsque l’en-tête de section [mysqld] était absent d’un fichier my.cnf fraîchement provisionné qui ne contenait que des entrées [mysql] — MySQL parse le fichier sans erreurs mais ignore la directive.

Pour les erreurs de limite mémoire serveur connexes qui apparaissent aux côtés des erreurs de paquet MySQL dans les fichiers journaux, les mêmes règles de section de configuration s’appliquent. Pour les autres limites MySQL et PHP du serveur, une approche similaire de modification du fichier de configuration serveur résout le problème.

Articles connexes

Updated on mai 23, 2026

Rene Hermenau

Auteur : Rene Hermenau

About the author: René Hermenau is the founder of WP STAGING. He works on WordPress backups, staging, migrations, database handling, and safe deployment workflows.