![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема при использовании транзакций [D7, MySQL]
Квэнди © (2005-02-18 16:02:00)Добрый день, господа, никак не могу понять, что означает сл. ошибка?
Commands out of sync; you can`t run this command now
Возникает она в цикле, в котором производится 2500 запросов insert, перед циклом выполнено
.starttransaction
при
.rollback
внутри цикла все впорядке, все втсавки отменяются, но при попытке провести все вставки до конца возникает такая ошибка.
Квэнди (2005-02-18 17:28:00) [21]DBexpress имелся ввиду.
Квэнди (2005-02-18 17:24:00) [22]версия MYSQL 4.0
тип таблицы InnoDB , который является транзакционным.
компоненты Dbrxpress
Квэнди (2005-02-18 17:22:00) [23]вы предлагаете за циклом писать 2500 строк? крайне интересно...
sniknik (2005-02-18 17:21:00) [24]> я написал последовательность действий... ничего более...
ну вот, уже началось. ;о))
Johnmen (2005-02-18 17:20:00) [25]Уровень изоляции тр-ии можно и не ставить. Да и транзакцией можно не управлять вообще. Т.к. у MySQL нет транзакционного механизма.
Кстати, какая версия MySQL и какие компоненты доступа ?
sniknik (2005-02-18 17:19:00) [26]> для примера
прям раздражать начинает. ;) а ошибка у тебя в рабочем коде или в том что для примера? (а то вот я вижу глюк. а ты скажеш, там нормально, сдесь описался ?)
> query1.sql.add('insert into ......');
???? внутри цикла? и без clear.
(в любом случае нужно выносить за цикл, нафига заставлять компоненты "перенапрягаться"? лишнюю работу делать...)
Квэнди (2005-02-18 17:18:00) [27]я написал последовательность действий... ничего более... еще раз говорю: при использовании rollback, т.е. при срабатывании условия все происходит нормально, т.е. все запросы откатываются, но при попытке полностью пройти цикл выдается данная ошибка...
При удалении строк, связанных с транзакциями все запросы проходят успешно.
Desdechado (2005-02-18 17:14:00) [28]странно - роллбак по условию...
да и очистки текста квери не вижу...
Квэнди (2005-02-18 17:10:00) [29]ttr.IsolationLevel:=xilDIRTYREAD;
sqlmain.StartTransaction(ttr);
for i:=1 to 2500 do (для примера)
begin
query1.sql.add('insert into ......');
query1.execsql(true);
if <условие> then
begin
sqlmain.rollback;
exit;
end;
end;
if <условие> then
sqlmain.commit;
Johnmen (2005-02-18 17:03:00) [30]Чётко - какая последовательность ?