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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top