Данные MySQL слишком длинные для столбца, встречающегося в LONGBLOB

У меня есть следующая таблица MySQL (версия 5.1) (InnoDB):

Username varchar(50)  
Sequence int(11)  
FileType varchar(10)  
Photo longblob -- here
PhotoSize int(11)  
Timestamp datetime

Попытка вставить байт [] 96,7 КБ завершается неудачно с ошибкой:

Данные слишком длинные для столбца "Фото" в строке 1

Вставка byte[] (размер 37.2КБ) работает отлично. Я не знаю, что является переломным моментом.

Я погуглил это, и многие сказали, что решение было изменить это с BLOB на LONGBLOB. Это не сработало. Другие говорят, что изменение Max_Allowed_Packet на 16M (в файле my.ini) решит проблему. Это тоже не сработало.

Может кто-нибудь мне помочь?

2 ответа

Решение

Даже если они "могут", базы данных не созданы для хранения двоичных файлов. Более эффективно иметь в своей таблице путь к файлам на вашем сервере.

LONGBLOB

Столбец BLOB с максимальной длиной 4 294 967 295 или 4 ГБ (232 - 1) байтов. Эффективная максимальная длина столбцов LONGBLOB зависит от настроенного максимального размера пакета в протоколе клиент-сервер и доступной памяти. Каждое значение LONGBLOB хранится с использованием четырехбайтового префикса длины, который указывает количество байтов в значении.

Вы уверены, что отредактировали правильный файл my.ini? Вы проверили загруженные значения конфигурации? Если вы используете phpMyAdmin, перейдите на вкладку "Переменные" и проверьте значение "максимально допустимый пакет", по умолчанию это 16 777 216, вы должны быть более чем 1 000 000 000

Другие вопросы по тегам