Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2014, 14:19   #1
P_bee
 
Регистрация: 22.05.2014
Сообщений: 4
Радость Не грузятся большие изображения в БД

Добрый день!
(Delphi+MySql 5.5)
Проблема такова: организовал загрузку фото в поле типа mediumblolb, но при загрузке изображения больших размеров (больше 500:500 или 640х480) вылетает ошибка "Project.. raised exception class EMySqlException with message 'Lost connection to MySql server during query Socket error on write. WSAGetLastError return 10054($2746)'. Process stopped.Use Step or Run to Continue". Подскажите с чем это может быть связано.
Вот так организована загрузка пикчи в бд:
Код Delphi

Код:
procedure TPribory.Button10Click(Sender: TObject);
var
      jpeg: TJPEGImage;
      bmp: TBitmap;
    begin
      if  OpenPictureDialog1.Execute then
      begin
        jpeg := TJPEGImage.Create;
        bmp := TBitmap.Create;
        try
          jpeg.LoadFromFile(OpenPictureDialog1.FileName);
          bmp.Assign(jpeg);
          MyTable6.Edit;                  // режим редактирования
          MyTable6.FieldByName('File').Assign(bmp);//   загрузка фото
          MyTable6.Post;                  // сохраняем данные
        finally
          jpeg.Free;
          bmp.Free;
        end;
      end;



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось P_bee; 23.05.2014 в 00:27.
P_bee вне форума Ответить с цитированием
Старый 22.05.2014, 14:42   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Возможно, размер данных превышает максимально допустимое значение для mediablob. Попробуйте longblob.
Streletz вне форума Ответить с цитированием
Старый 22.05.2014, 14:45   #3
P_bee
 
Регистрация: 22.05.2014
Сообщений: 4
По умолчанию

пробовал, всё то же самое. MediumBlob до 16 Мегабайт, я же гружу картинки размером 100 и более килобайт...почему-то всё зависит именно от размера изображения.
P_bee вне форума Ответить с цитированием
Старый 22.05.2014, 14:47   #4
P_bee
 
Регистрация: 22.05.2014
Сообщений: 4
По умолчанию

Из ошибки видно, что при загрузке файла с сервером пропадает соединение, пробовал продлить время соединения через Set Global_connection_time - бестолку..
P_bee вне форума Ответить с цитированием
Старый 23.05.2014, 00:18   #5
P_bee
 
Регистрация: 22.05.2014
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Возможно, размер данных превышает максимально допустимое значение для mediablob. Попробуйте longblob.
Короче, друже, нашёл в чём проблема и быстро всё решил ) Верно было сказано, что "размер данных превышает максимально допустимое значение"...только не для поля Blob, а для настроек MySql Server-а, т.е. при загрузке, файл первышает объём и рвётся соединение.
В настройках сервера это свойство значится как max_allowed_packet.
Изменяется через командную строку Mysql, либо через файлы *.ini.
Через командную строку:
Код:
mysql>set Global max_allowed_packet=16*1024*1024; 
установка максимального размера файла в 16МБ.
После этого всё работает как по маслу.
В итоге код обработчика по нажатию кнопки был сокращён:
Код:
procedure TPribory.Button10Click(Sender: TObject);
var
      jpeg: TJPEGImage;
      bmp: TBitmap;
    begin
      if  OpenPictureDialog1.Execute then
      begin
        jpeg := TJPEGImage.Create;
        bmp := TBitmap.Create;
        try
          jpeg.LoadFromFile(OpenPictureDialog1.FileName);
          bmp.Assign(jpeg);
          MyTable6.Edit;                  // режим редактирования
          MyTable6.FieldByName('File').Assign(bmp);//   загрузка фото
          MyTable6.Post;                  // сохраняем данные
        finally
          jpeg.Free;
          bmp.Free;
        end;
      end;
end;

Последний раз редактировалось P_bee; 23.05.2014 в 00:26.
P_bee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не грузятся картинки mrPaul HTML и CSS 3 16.11.2013 21:13
Большие изображения на маленькой форме Harikolo Мультимедиа в Delphi 5 09.02.2011 09:08
Где хранить большие изображения в приложении? MyLastHit Общие вопросы Delphi 11 21.12.2010 13:36
Большие изображения в Image Jene4ka Помощь студентам 7 16.03.2010 13:12
поменять большие буквы на маленькие и маленькие на большие в си++ Барби Помощь студентам 4 08.04.2008 01:25