При вызове из консоли MySQL хранимая процедура write_messages() производит выборку строк и записывает их в таблицу (приблизительно 50 000 записей). На этой ей требуется около 70 сек.
Но при вызове из 1С выполнение той же хранимой процедуры принудительно завершается ровно через 31 секунду (определил по логам MySQL), и никакие строки в таблицу не записываются. При этом никаких ошибок не выдается.
Понятно, что нужно увеличить время, которое 1С отводит хранимой процедуре для выполнения. Подскажите, пожалуйста, как называется параметр, которому можно присвоить необходимое значение?
При вызове из консоли MySQL хранимая процедура write_messages() производит выборку строк и записывает их в таблицу (приблизительно 50 000 записей). На этой ей требуется около 70 сек.
У mysql есть переменная в конфиге connect-timeout. Из документации к mysql удалось выяснить:
"connect-timeout: Время ожидания для соединения в секундах.
"Устанавливает или возвращает число секунд ожидания выполнения команды. Значение по умолчанию - 30. Чтение и запись. Используйте это свойство, если возникают проблемы из-за плотного сетевого трафика или загруженности сервера. Если время, указанное в CommandTimeout, истекает до завершения выполнения команды, происходит ошибка, и ADO отменяет команду. Если Вы установите свойство в ноль, ADO будет ждать бесконечно, пока команда не будет выполнена. Удостоверьтесь, что используемый провайдер поддерживает свойство CommandTimeout. Установка CommandTimeout объекта Connection никак не связана с установкой свойства CommandTimeout объекта Command."
К сожалению, хранимая процедура, вызываемая кодом ниже, по прежнему выполняется не более 30 секунд:
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionTimeout = 900;
Соединение.CommandTimeout = 900;
СтрокаСоединения = "DRIVER={MySQL ODBC 3.51 Driver};UID=root1;SERVER=33.0.0.4;PORT=3306;OPTION=0;Database=discount_system";
Попытка
Соединение.Open(СтрокаСоединения);
Исключение
Сообщить("Не могу подключиться к базе данных MySQL!!!");
Сообщить(ОписаниеОшибки());
КонецПопытки;
Command = Новый COMОбъект("ADODB.Command");
Command.CommandTimeout = 900;
Command.ActiveConnection = Соединение;
Command.CommandText = "write_messages";
Command.CommandType = 4;
Command.Execute();
Попытка
Соединение.Close();
Исключение
КонецПопытки;
Показать
У кого-нибудь есть соображения, с чем это может быть связано?