Вызов хранимой процедуры через ADO завершается через 31 сек.

1. Alexey26 2 30.09.13 17:57 Сейчас в теме
Добрый вечер!

cnnConn1 = Новый COMОбъект("ADODB.Connection");

cnnConn1.CommandTimeout=0;
cnnConn1.ConnectionTimeout = 300; 
cnnConn1.Open(СтрокаПодключенияКSQL1 + "; readtimeout=300; writetimeout=300");

Попытка
	cnnConn1.Execute("USE discount_system;");
	cnnConn1.Execute("CALL write_messages();");
Исключение
	Сообщить(ОписаниеОшибки());
КонецПопытки;
Показать


При вызове из консоли MySQL хранимая процедура write_messages() производит выборку строк и записывает их в таблицу (приблизительно 50 000 записей). На этой ей требуется около 70 сек.

Но при вызове из 1С выполнение той же хранимой процедуры принудительно завершается ровно через 31 секунду (определил по логам MySQL), и никакие строки в таблицу не записываются. При этом никаких ошибок не выдается.

Понятно, что нужно увеличить время, которое 1С отводит хранимой процедуре для выполнения. Подскажите, пожалуйста, как называется параметр, которому можно присвоить необходимое значение?
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tango 540 30.09.13 18:00 Сейчас в теме
(1) Alexey26, наверное, вам лучше вызывающий код здесь представить
может быть, это время жизни не процедуры, а кома
4. tango 540 30.09.13 18:05 Сейчас в теме
(1) Alexey26,
При вызове из консоли MySQL хранимая процедура write_messages() производит выборку строк и записывает их в таблицу (приблизительно 50 000 записей). На этой ей требуется около 70 сек.
Прикрепленные файлы:
3. tango 540 30.09.13 18:01 Сейчас в теме
и даже не самого кома, а время, которое он ждет ответа на месседж
5. tango 540 30.09.13 18:08 Сейчас в теме
У mysql есть переменная в конфиге connect-timeout. Из документации к mysql удалось выяснить:
"connect-timeout: Время ожидания для соединения в секундах.
7. Alexey26 2 03.10.13 14:36 Сейчас в теме
(5) tango, спасибо вам за ответ! Я проверил переменные MySQL - с ними всё в порядке...
6. Alexey26 2 03.10.13 13:40 Сейчас в теме
Добрый день!

В описании свойства CommandTimeout объектов Connection и Command по следующей ссылке:
http://www.script-coding.com/ADO.html
указано:

"Устанавливает или возвращает число секунд ожидания выполнения команды. Значение по умолчанию - 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();
Исключение

КонецПопытки;
Показать

У кого-нибудь есть соображения, с чем это может быть связано?
8. m1cro 18.11.15 08:40 Сейчас в теме
Помоему,для MySql можно указывать Таймаут команды в строке подключения.
9. Alexey26 2 07.12.15 15:56 Сейчас в теме
(8) m1cro, спасибо! Удалось, наконец, разобраться с этой проблемой.
10. jbi2010 15.01.22 09:10 Сейчас в теме
так в чем была проблема?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот