sql >> データベース >  >> RDS >> Mysql

MySQLストアドプロシージャを呼び出すときにパケットの順序が正しくないエラー

    この問題を解決するためにコードの一部を分離しようと何時間も費やした後、ATTR_EMULATE_PREPARESフラグをtrueに設定すると、エラーが解消されたことに気付きました。

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

    これは、MySQLによってネイティブにではなく、プリペアドステートメントをエミュレートするようにPDOに指示します。私が読んでいることから、MySQLとPHPの最新バージョンを使用している場合は、通常、このフラグをオフにすることをお勧めします(デフォルトではtrueです)。詳細については、このをご覧ください。 SO記事

    これはMySQLのバグだと思います(バージョン5.6.17まで問題がありました)。この特定の問題についてはあまり議論されていないので、うまくいけば、これにより他の誰かがトラブルシューティングにかかる​​時間を節約できます。この問題は、このMySQLバグページ でも説明されています。 、しかし投稿された解決策は私の状況では役に立ちませんでした。



    1. テーブルの作成中にエラーが発生しました:1行目の'order(order_id INT UNSIGNED NOT NULL AUTO_INCREMENT、user_id'の近くのSQL構文にエラーがあります

    2. T-SQLのバグ、落とし穴、およびベストプラクティス–ウィンドウ関数

    3. TSQLでJSONを解析する

    4. 固定幅フィールドの一括挿入