3

我正在尝试通过 Kohana 的 ORM 库在 MySQL 表中创建和检索 BLOB。

代码看起来像:

$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();

我已经通过将数据输出到文件来验证此时数据是否正常。但是,当我检索数据时,它会损坏。我已经设法进一步缩小范围 - 我使用 MySQL 查询工具来提取数据库中保存的数据,并且我可以验证数据库中的数据是否已损坏,因此问题一定出在 INSERT .

此外,输入的文件并不总是损坏 - 较小的文件(例如图像)往往没问题。

有人有想法么?

4

2 回答 2

3

事实证明,在这种情况下,我使用的是 BLOB 数据类型。

BLOB 数据类型在 65535 个字符处截断数据(静默,不会抛出错误!)

我已经将它提升到 MEDIUMBLOB(最大长度为 16777215 个字符),它似乎工作正常!

于 2008-10-13T12:09:24.283 回答
0

胡乱猜测,但是:可能是因为 kohana 模型层将所有数据作为字符数据而不是二进制数据插入,这会给您在保存/检索 BLOB 对象时带来麻烦。

于 2008-10-13T12:05:12.667 回答