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

L'instruction préparée par MySql Connector ne transfère que 64 octets

Le problème réside dans le constructeur du fichier image :

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

Cela devrait avoir l'attribut de mode binaire :

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

Le fichier, une image JPEG, est binaire Les données.

De plus, le vidage hexadécimal à l'octet 65 indique 1a , qui est le caractère de fin de fichier du système d'exploitation Windows :
0000040 1a 14 1115 1811 1821 1d1a 1f1d 1f1f 1713

Après avoir corrigé le constructeur, MySql affiche la taille des données :

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)