Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur de paquets hors service lors de l'appel de la procédure stockée MySQL

Après avoir passé de nombreuses heures à essayer d'isoler des parties de mon code pour résoudre ce problème, j'ai remarqué que l'erreur disparaissait après avoir défini l'indicateur ATTR_EMULATE_PREPARES sur true.

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

Cela indique à PDO d'émuler les instructions préparées au lieu d'être nativement par MySQL. D'après ce que j'ai lu, il est généralement recommandé de désactiver cet indicateur (c'est vrai par défaut) si vous utilisez la version la plus récente de MySQL et PHP. Vous pouvez trouver plus d'informations à ce sujet dans ce Article SO .

Je pense que c'est un bogue avec MySQL (j'ai eu le problème jusqu'à la version 5.6.17). Il n'y a pas beaucoup de discussions sur ce problème particulier, alors j'espère que cela permettra à quelqu'un d'autre d'économiser des heures de dépannage. Le problème est également abordé sur cette page de bogues MySQL , mais la solution affichée ne m'a pas aidé dans ma situation.