Кохана PHP, ORM и MySQL BLOB
Вопрос
Я пытаюсь создать и извлечь BLOB в таблице MySQL с помощью библиотеки ORM Коханы.
Код выглядит примерно так:
$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 . р>
Кроме того, введенные файлы не всегда повреждены - файлы меньшего размера (например, изображения), как правило, в порядке.
У кого-нибудь есть идеи?
Решение
Оказывается, в данном случае я использовал тип данных BLOB.
Тип данных BLOB усекает данные до 65535 символов (без вывода сообщений об ошибках!)
Я поднял его до MEDIUMBLOB (максимальная длина которого составляет 16777215 символов), и похоже, что он работает нормально!
Другие советы
Неожиданная догадка, но: вероятно, потому что слой модели Кохана вставляет все данные в виде символьных данных вместо двоичных, что вызовет проблемы при сохранении / получении объектов BLOB.