Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: Баг или вторая фича?
Баг или вторая фича?
Posted: 2007/05/25 01:06
 
Дмитрий, добрый день!

Если выполнять:

ADQuery_service.SQL.Text:='OPTIMIZE TABLE `article_types`';
ADQuery_service.Execute;

итут же попытаться выполнить

ADQuery_service.SQL.Text:='UPDATE `biblio_opisanie` SET biblio_opisanie = trim(biblio_opisanie)';
ADQuery_service.Execute;

Вываливается ошибка:
. Commands out of sync; you can't run this command now [errno=2014]

При этом можно сколько угодно выполнть апдейтов друг за другом - проблем нет, но как только использую OPTIMIZE TABLE или ANALYZE TABLE - следующий за ним запрос вываливает ошибку.

Причем, потом уже, пока писал это сообщение обнаружил, что если для запросов с UPDATE оставить
Execute, но у optimize или ANALYZE заменить на Execute на Open:

ADQuery_service.SQL.Text:='OPTIMIZE TABLE `article_types`';
ADQuery_service.Open;

то проблем не возникает.

Баг или фича?
Re:Баг или вторая фича?
Posted: 2007/05/25 01:34
 
Привет

OPTIMIZE TABLE команда возвращает набор данных. Если его не открыть, то он остается у клиента и соединение считается занятым. Поэтому Execute - не работает, Open - работает.

Я сделаю, что бы Execute убивал набор данных команды, если такой имеется.

Удачи,
Дмитрий
Re:Баг или вторая фича?
Posted: 2007/05/25 01:38
 
Вообще-то должен прибиваться. Какая у вас версия AnyDAC ?
Re:Баг или вторая фича?
Posted: 2007/05/25 02:06
 
Вроде последняя 1.12.2 (225)