Вы здесь: Сайт / Библиотека / Заметка. MySQL. Загрузка большого файла (1 Mb) в Blob-поле

Вставка большого Blob'а

Совсем недавно, при написании небольшой программы на Perl, возникла проблема при загрузке файлов размером более 1 Mb в blob поле СУБД MySQL. При этом использовался интерфейс Perl DBI.

После продолжительного гугления я так ничего не обнаружил. Стал читать маны и вот до чего дочитался:

По умолчанию размер запроса ограничен и зависит от переменной max_allowed_packet и составляет 16777216 байт.

Посмотреть значение можно командой SHOW VARIABLES();. На эту команду я получаю ответ:

+---------------------------------+------------------------------+
| Variable_name                   | Value                        |
+---------------------------------+------------------------------|
| back_log                        | 50                           |
.... 
| max_allowed_packet              | 1047552                      |
...
 

Попытка установить это значение на лету (через SET...) ни к чему хорошему не привела, про что в мануале сказано значение переменной должно быть установлено при запуске сервера.

А еще там написано про то, что по умолчанию ее значение 16777216 байт, а это совсем не то значение, которое у меня.

После недолгой правки my.ini, в нем появилась строчка

[mysqld]
set-variable = max_allowed_packet=16M

На этом все проблемы закончились. Если хотите вставлять файл больше 16 Mb, то, соответственно, увеличивайте размер пакета.

Вот выдержка из мануала: max_allowed_packet Максимальный размер одного пакета. Изначально размер буфера сообщений устанавливается в net_buffer_length байтов, но при необходимости может возрасти до max_allowed_packet байтов. Это значение по умолчанию не настолько велико, чтобы отсеивать большие (возможно ошибочные) пакеты. Если используются большие столбцы BLOB, его необходимо увеличить. Значение должно быть не меньше самого большого BLOB, который будет использоваться. Ограничение протокола для max_allowed_packet составляет 16 Мб в MySQL 3.23 и 1Гб в MySQL 4.0.

[Список]

Copyright © 2005-2008 by Ткачев Филипп aka ZoonMan. Все идеи явно или неявно используюшиеся на этом сайте являются интеллектуальной собственностью автора.
Копирование разрешается без согласия, но ссылка на автора обязательна.
Cгенерировано
за: 0.61 сек
38.103.63.62
38.103.63.62
Вверх WAP версия сайта 



Rambler's Top100 Business Key Top Sites