Вопрос

Я пытаюсь создать и извлечь 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top