Ошибка при вставке Blob поля в таблицу MySQL

456
07 февраля 2017, 20:22

Имеется код вставки в БД:

procedure TQueryThread.Execute;
begin
  FMyConn := TMyConnection.Create(nil);
  FMyConn.Server := IniParams.pServer;
  FMyConn.Port := StrToInt(IniParams.pPort);
  FMyConn.Database := IniParams.pDatabase;
  FMyConn.Username := 'address';
  FMyConn.Password := 'xxx';
  FMyConn.Connected := true;
  qFileBlob := TMyQuery.Create(nil);
  qFileBlob.Connection := FMyConn;
  qFileBlob.SQL.Clear;
  qFileBlob.SQL.Add('INSERT INTO attachment (address_id,file_blob,create_date,file_name,file_extension,description) values (:pAddressID,:pFileBlob,:pCreateDate,:pFileName,:pFileExtension,:pDescription)');
  qFileBlob.ParamByName('pAddressID').AsInteger := FAddressID;
  qFileBlob.ParamByName('pFileBlob').LoadFromFile(FName, ftBlob);
  qFileBlob.ParamByName('pCreateDate').AsDate := FCreateDate;
  qFileBlob.ParamByName('pFileName').AsString := ExtractFileName(FName);
  qFileBlob.ParamByName('pFileExtension').AsString := ExtractFileExt(FName);
  qFileBlob.ParamByName('pDescription').AsString := FDescription;
  qFileBlob.Execute;
  Synchronize(DisplayMessage);
end;

Суть в том, что при попытке вставки в базу данных за пределами локальной сети файлов более 16Мб получаем ошибку:

Данная ошибка отсутствует при вставке Blob поля внутри локальной сети независимо от размера вставляемого файла.

На момент ошибки имеем:

 SHOW VARIABLES LIKE 'max_allowed_packet'
    mysql> show variables like "max_allowed_pa
    -> ;
+--------------------+-----------+
| Variable_name      | Value     |
+--------------------+-----------+
| max_allowed_packet | 524288000 |
+--------------------+-----------+

В чем может быть проблема?

Answer 1

Ваша проблема в опции max_allowed_packet у которой, в вашем случае, выставлено значение 16 Mб. Если вам нужно вставлять блобы большего размера, измените настройки сервера:

[mysqld]
max_allowed_packet=64M

Верхняя граница - 1Гб.

READ ALSO
Объединененные данные из двух таблиц с помощью двух других

Объединененные данные из двух таблиц с помощью двух других

Мне нужно, совместить данные из двух таблиц вот как выглядит схема

419
По поводу потока и завершения AsynkTask

По поводу потока и завершения AsynkTask

Всем привет) У меня такая задача: С активности я запускаю подгрузку одного JSON-чика по кнопке через AsynkTaskМне нужно запустить прогрессбар, сделать,...

451
Что такое дейтаграммы (Datagram)?

Что такое дейтаграммы (Datagram)?

Сетевое взаимодействие по протоколу ТСР /IP подходит для большинства сетевых нуждОно обеспечивает сериализируемые, предсказуемые и надежные...

531