SHA1ハッシュをBINARY(20)列に格納したいと思います。準備してINSERT INTO foo SET ( hash=? )
から、20バイトのバイナリ値を含む変数にバインドするステートメントを実行してみましたが、実行時の構文エラー「... hash ='\ 0 \ 0#* $ ^!...'」が発生しました。(プリペアドステートメントを実行するとこのような値が表されるのはなぜか困惑しています。) この投稿は、SHA1をBINARY(20)列に格納することに問題があることを示していませんが、SQLでどのように行われるかを示していません。
更新:「なぜ16進数ではなく2進数なのですか?」約10億行になるので、20バイト余分に重要です。また、数値ルックアップは文字列ルックアップの2倍の速度であると言われています(また、BINARYフィールドは数値のように扱われます)
更新2:エラーメッセージは、バイナリ値の表現についてではなく、SETリストを囲む括弧について不平を言っていました。