Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die vorbereitete Anweisung von MySql Connector überträgt nur 64 Byte

Das Problem liegt im Konstruktor der Bilddatei:

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

Dies sollte das Binärmodusattribut haben:

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

Die Datei, ein JPEG-Bild, ist binär Daten.

Außerdem zeigt der Hex-Dump bei Byte 65 1a , das das Dateiendezeichen des Windows-Betriebssystems ist:
0000040 1a 14 1115 1811 1821 1d1a 1f1d 1f1f 1713

Nach dem Korrigieren des Konstruktors zeigt MySql die Datengröße an:

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)