Erreurs de base de données liées à max_allowed_packet sur Adobe Commerce
Cet article fournit une solution pour les erreurs de connexion à la base de données dans le var/log/exception.log
qui peuvent se produire lors de l’importation d’un grand nombre de produits ou de l’exécution d’une autre tâche qui force le serveur à gérer des paquets plus volumineux que celui défini dans max_allowed_packet
qui est supérieur à la taille par défaut de 16 Mo.
Produits et versions concernés
- Adobe Commerce sur site, toutes les versions prises en charge
Problème
Lorsqu'un client MySQL ou le serveur mysqld reçoit un paquet supérieur à max_allowed_packet}, il génère une erreur ER_NET_PACKET_TOO_LARGE (qui peut être vue dans exception.log
) et ferme la connexion. Avec certains clients, vous pouvez également obtenir une connexion perdue au serveur MySQL lors de la requête si le paquet de communication est trop volumineux.
Étapes à reproduire
Plusieurs tâches peuvent produire ce problème. Cela peut inclure la tentative d’importation d’un grand nombre de produits dans Adobe Commerce ou des requêtes transactionnelles renvoyant trop de données. Il en résulte des erreurs de connexion à la base de données dans var/log/exception.log
et d’autres problèmes, comme des produits qui n’ont pas été importés avec succès.
Cause
La valeur par défaut de 16 Mo pour le paramètre MySQL max_allowed_packets
n’est pas assez grande pour répondre à vos besoins.
Solution
-
Identifiez les requêtes pour lesquelles les lignes individuelles dépassent la limite actuelle de
max_allowed_packet
. De telles requêtes doivent être réécrites afin de réduire la quantité de données renvoyées. Pour ce faire, vous pouvez inclure un plus petit nombre de colonnes dans l’instructionSELECT
ou choisir un type de données plus petit pour diverses colonnes dans la conception de tableau. Si vous disposez d’un compte New Relic, utilisez la page Erreurs APM New Relic et la page Bases de données New Relic APM et les journaux New Relic pour rechercher les requêtes appropriées. -
Pour une correction rapide, vous pouvez temporairement demander une augmentation de la taille
max_allowed_packet
lorsque vous envoyez un ticket, mais c’est à la discrétion de l’équipe d’ingénierie du client, car une valeur trop importante peut entraîner des échecs de réplication en provoquant des embouteillages du réseau. -
Pour certaines de vos tables de base de données volumineuses, il est recommandé d’exécuter la commande suivante dans l’interface de ligne de commande :
code language-none show table status like [table name to match]
Évaluez les requêtes exécutées sur ces tables pour déterminer si vous dépassez la taille recommandée de
max_allowed_packet
de 16 Mo. Suivez la même procédure à l’étape 1 pour réduire les données renvoyées par de telles requêtes.
Lecture connexe
- Présentation de l’installation sur site dans notre documentation destinée aux développeurs.
- Le chargement de la base de données perd la connexion à MySQL dans notre base de connaissances de support.
- Bonnes pratiques de base de données pour Adobe Commerce sur l’infrastructure cloud dans notre base de connaissances d’assistance.
- Bonnes pratiques pour résoudre les problèmes de performances de la base de données dans notre base de connaissances de support.
- Bonnes pratiques pour la modification des tables de base de données dans le manuel de mise en oeuvre de Commerce