Question

J'essaie de créer et de récupérer un BLOB dans une table MySQL via la bibliothèque ORM de Kohana.

Le code ressemble à quelque chose comme:

$attachment = new Attachment_Model();
$attachment->name = $info['FileName'];
$attachment->size = strlen($info['Data']);
$attachment->data = $info['Data'];
$attachment->mime_type = $info['content-type'];
$attachment->save();

J'ai vérifié que les données sont correctes à ce stade en les exportant dans un fichier. Cependant, lorsque je récupère les données, elles sont corrompues. J'ai réussi à circonscrire un peu plus cela - j'ai utilisé l'outil de requête MySQL pour extraire les données telles qu'elles se trouvaient dans la base de données et je peux vérifier que les données de la base de données sont corrompues. Le problème doit donc être sur INSERT. .

De plus, les fichiers entrés ne sont pas toujours corrompus - les fichiers plus petits (tels que les images) ont tendance à être OK.

Quelqu'un a des idées?

Était-ce utile?

La solution

Il s’avère que dans ce cas, j’utilisais le type de données BLOB.

Le type de données BLOB tronque les données à 65 535 caractères (en silence, sans générer d'erreur!)

Je l'ai passé à un MEDIUMBLOB (qui a une longueur maximale de 16777215 caractères) et il semble fonctionner correctement!

Autres conseils

Wild suppose, mais: probablement parce que la couche de modèle kohana insère toutes les données en tant que données de type caractères au lieu de données binaires, ce qui vous causera des problèmes lors de la sauvegarde / récupération d'objets BLOB.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top