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

MySqlコネクタのプリペアドステートメントは64バイトのみを転送します

    問題は画像ファイルのコンストラクターにあります:

    std::ifstream   blob_file(filename.c_str());
    

    これには、バイナリモード属性が必要です:

    std::ifstream   blob_file(filename.c_str(), std::ios_base::binary);
    

    JPEG画像であるファイルはバイナリです データ。

    また、バイト65の16進ダンプは1aを示しています 、これはWindows OSのファイルの終わり文字です:
    0000040 1a 14 1115 1811 1821 1d1a 1f1d 1f1f 1713

    コンストラクターを修正した後、MySqlはデータサイズを表示します:

    mysql> SELECT ID_Picture, LENGTH(Image_Data)
        -> FROM picture_image_data
        -> WHERE ID_Picture = 1;
    +------------+--------------------+
    | ID_Picture | LENGTH(Image_Data) |
    +------------+--------------------+
    |          1 |              18453 |
    +------------+--------------------+
    1 row in set (0.00 sec)
    



    1. asp.net / MySQL:ユーザー'' @'localhost'のアクセスが拒否されました(パスワードを使用:NO)

    2. MariaDB JSON_ARRAY()の説明

    3. データベースの歴史

    4. 主キーを持つリンクテーブルを追加するVBAコード