Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro de pacotes fora de ordem ao chamar o proc armazenado do MySQL


Depois de passar muitas horas tentando isolar partes do meu código para resolver esse problema, notei que o erro desapareceu após definir o sinalizador ATTR_EMULATE_PREPARES como verdadeiro.
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);

Isso diz ao PDO para emular as instruções preparadas em vez de nativamente pelo MySQL. Pelo que tenho lido, geralmente é recomendável desativar esse sinalizador (é verdade por padrão) se você estiver usando a versão mais atualizada do MySQL e do PHP. Você pode encontrar mais informações sobre isso neste Artigo SO .

Eu acredito que isso seja um bug com o MySQL (eu tive o problema até a versão 5.6.17). Não há muita discussão sobre esse problema específico, portanto, esperamos que isso economize horas de solução de problemas para outras pessoas. O problema também é discutido nesta esta página de bug do MySQL , mas a solução postada não me ajudou na minha situação.