![]() |
| ||
|
|
Новости |
Поиск |
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
внутри цикла все впорядке, все втсавки отменяются, но при попытке провести все вставки до конца возникает такая ошибка.
Anatoly Podgoretsky (2005-02-18 21:01:00) [1]На придирки не хоже, больше похоже на ментальный анонизм.
Квэнди (2005-02-18 21:00:00) [2]в том то все и дело, что я просто хотел узнать значение этой ошибки, т.е. её текст, который ты прислал, а все, что было в ветке на 90% с этим связано не было ))
sniknik (2005-02-18 20:55:00) [3]> что во время commit одной из транзакций выполнялся запрос.. ))
можеш показать это место пальцем в коде
Квэнди © (18.02.05 17:10) [2]
???
и перечитай теперь первый мой пост
sniknik © (18.02.05 17:19) [5]
до сих пор думаеш я к тебе придираюсь?
Квэнди (2005-02-18 20:44:00) [4]собственно говоря как всегда в золотых руках, не оттуда ростущих... :)
в один из моментов выполнения получалось так, что во время commit одной из транзакций выполнялся запрос.. ))
sniknik (2005-02-18 20:42:00) [5]> проблема исправлена.
и в чем же она была? ;)
sniknik (2005-02-18 20:41:00) [6]> не распыляясь на тофтологию
в том то и дело, я считаю что если есть ошибка в коде, явная такая, махровая, то дальнейшие выяснения поведения этого кода, без ее предварительного исправления и есть тавтология. и занимался этим ты а не я.
(я прямо чуть не насильно пытаюсь тебя заставить эту ошибку исправить, а ты упираешся и мне начинаеш говорить что этот глюк к тому отношения никакого не имеет... бред, даже если это и впрямь окажется так (не имеет))
Квэнди (2005-02-18 20:40:00) [7]Благодарю за справку, проблема исправлена.
sniknik (2005-02-18 20:32:00) [8]> заключался всего лишь в значении ошибки
всего лиш?
я наивно предполагал что смысл любой проблемы сюда положенной, в ее разрешении.
с учетом нового понимания... не поленился нашол доку... (наверное не ту что у тебя ведь у тебя этого нет)
If you get Commands out of sync; You can't run this command now in your client code, you are calling client functions in the wrong order!
This can happen, for example, if you are using mysql_use_result() and try to execute a new query before you have called mysql_free_result(). It can also happen if you try to execute two queries that return data without a mysql_use_result() or mysql_store_result() in between.
кстати насчет порядка, два инсерта в одном пакете это в порядке вещей для mysql? а десять? а 2500?
или там всетаки порядок как в access-е по одному запросу на выполнение? (выяснять неохота, не настолько это интересно).
Квэнди (2005-02-18 19:07:00) [9]благодарю за помощь, к сожалению не нашел в документации данной ошибки ( иначе прост не обратился бы..
Desdechado (2005-02-18 19:06:00) [10]документацию к серверу посмотри - там есть "значения"
мы пытались помочь тебе найти причины
Квэнди (2005-02-18 18:58:00) [11]Если бы вас не затруднило все же изначально прочитать вопрос, не распыляясь на тофтологию, то вероятно вы бы поняли, что вопрос заключался всего лишь в значении ошибки
Commands out of sync; you can`t run this command now
а отнюдь не в способах реализации тех или иных задач...
sniknik (2005-02-18 18:17:00) [12]> ок, именно один из таких "ненормальных" выриантов и используется..
я знал, знал,... !!! еще в [5] сказал так и будет ;о)))
т.е. ты признаеш, что приведенный код, на котором строилось все обсуждение и кроме которого у нас нет ничего, на самом деле "обманка"?, о чем тогда можно говорить? на неверных данных невозможно получить верное решение. (если только "дуриком", случайно)
> нельзя ли по существу?
по какому?
Квэнди (2005-02-18 17:58:00) [13]нельзя ли по существу?
Desdechado (2005-02-18 17:57:00) [14]пытаясь раздражаться и не утивая исходные данные, ты себе не помогаешь
Квэнди (2005-02-18 17:53:00) [15]ок, именно один из таких "ненормальных" выриантов и используется.. но вопрос об ошибке все же остался...
sniknik (2005-02-18 17:46:00) [16]вижу меня упорно не понимают... специально тренировался?
просто проверь,
параметры тут не причем (просто с выносом за цикл внесение запроса и изменением данных параметрами это самый "ненапряжный" вариант (хотя смотря для кого, кода будет немного больше))
а варианты(два) ненормальные но без глюка, я и без параметров давал.
Квэнди (2005-02-18 17:38:00) [17]А разве не именно в этом и заключался вопрос?....
как вы думаете, если бы я знал ограничение на колличество запросов в транзакции я бы задавал этот вопрос?
и еще.. разве в случае с использованием параметров проблема количества запросов под конец цикла решится??... )
sniknik (2005-02-18 17:36:00) [18]> вопрос то был немного не об этом...
это как сказать...
запрос то большой?
как думаеш сколько раз вставка выполнится? на последнем цикле в sql будет 2500 одинаковых инсертов (если влезет ;)), предпоследнем 2499.... и т.д., и какое ограничение на обьем у транзакции в mysql? (а такое есть наверняка).
Квэнди (2005-02-18 17:31:00) [19]хорошо, я с вами не спорю, да вот только... вопрос то был немного не об этом...
sniknik (2005-02-18 17:30:00) [20]> вы предлагаете за циклом писать 2500 строк? крайне интересно...
ну что за прелестная чуш! ;о))
и я ничего не предлагал.
но могу, раз непонятно - запрос вносится за циклом, после выполняется в цикле сколько нужно, меняются только данные (параметры). это нормальная практика.
или ненормальная (но без заполнения компонента кучей запросов)
в цикле но
или
query1.sql.clear;
query1.sql.add('insert into ......');
или
query1.sql.text:= 'insert into ......';