BLOB PHP, ORM e MySQL di Kohana
Domanda
Sto cercando di creare e recuperare un BLOB in una tabella MySQL tramite la libreria ORM di Kohana.
Il codice è simile a:
$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();
Ho verificato che i dati sono OK a questo punto inviandoli in un file. Tuttavia, quando recupero i dati viene danneggiato. Sono riuscito a restringerlo un po 'di più - ho usato lo strumento di query MySQL per estrarre i dati come conservati nel database e posso verificare che i dati nel database siano corrotti, quindi il problema deve essere nell'INSERT .
Inoltre, i file inseriti non sono sempre corrotti - i file più piccoli (come le immagini) tendono ad essere OK.
Qualcuno ha qualche idea?
Soluzione
Si scopre che, in questo caso, stavo usando il tipo di dati BLOB.
Il tipo di dati BLOB tronca i dati a 65535 caratteri (in silenzio, senza generare un errore!)
L'ho portato a un MEDIUMBLOB (che ha una lunghezza massima di 16777215 caratteri) e sembra funzionare bene!
Altri suggerimenti
Indovina selvaggia, ma: probabilmente perché il livello del modello kohana inserisce tutti i dati come dati carattere anziché binari, il che causerà problemi durante il salvataggio / recupero di oggetti BLOB.