Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A instrução preparada do MySql Connector transfere apenas 64 bytes


O problema está no construtor do arquivo de imagem:
std::ifstream   blob_file(filename.c_str());

Isso deve ter o atributo de modo binário:
std::ifstream   blob_file(filename.c_str(), std::ios_base::binary);

O arquivo, uma imagem JPEG, é binário dados.

Além disso, o dump hexadecimal no byte 65 mostra 1a , que é o caractere de fim de arquivo do sistema operacional Windows:
0000040 1a 14 1115 1811 1821 1d1a 1f1d 1f1f 1713

Após corrigir o construtor, o MySql mostra o tamanho dos dados:
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)