Данные 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