Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Похоже MySQL не поддерживает серверные курсоры ADO. Даже... 15.02.07 04:13 Число просмотров: 3062
Автор: void <Grebnev Valery> Статус: Elderman
|
> Если какие-то скрытые грабли при использовании байндинг к > рекордсет для MySQL? > Проблема в том, что для совершенно вменяемых вызовов > хранимых процедур MySQL случается экзепшн-ы. Постоянно! > ODBC лог (на клиенте) пишет, что соединение с сервером > потеряно. В тоже время, error и qury лог на mysql пишет, > что клиент получил ошибку чтения данных и сервер сделал > аборт соединению. com_error же пишит в экзепшн обычные для > M$ просто невменяемые вещи, типа нет ресурсов. > > Интересно, что если заменить вызов хранимых процедур на > текст соответствующих запросов, то до какого-то момента > работает. Особено плохо тем процедурам, где в теле запросов > находятся union, или подзапросы. Может не в > IADORecordBinding дело? > > ПС. Курсоры - серверные, таймауты по умолчанию. В принципе, > хотя запросы и тяжёлые в процедурах, но время исполнения (в > SQL browser) не более 300 ms. > > ППС. Помогите, пожалуйста мыслями. Похоже MySQL не поддерживает серверные курсоры ADO. Даже если явно установить для _ConnectionPtr курсор adUseServer (что честно наследует _CommandPtr или _RecordsetPtr), то в дампе TCP/MySQL protocol видно, что MySQL передаёт клиенту весь набор данных, запрошенный или запросом или хранимой процедурой.
Оказалось также, что проблема с потерей соединения характерна для тех хранимых процедур, которые вызываются в цикле на клиенте. Такое впечатление, что это баг сервера MySQL, а не клиентской части. Интересно и то, что для ADO.NET 1.0.7 connector для MySQL аналогичных проблем не наблюдается пока.
|
|
|