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

У меня есть следующая таблица 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 ]

3 голосов
/ 25 октября 2010

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

2 голосов
/ 25 октября 2010

LONGBLOB

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

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

...