![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Конфликты транзакций
Desperado © (2004-08-23 15:36:00)Я разрабатываю распределенную бд в мидасе.
К одной таблице имеют доступ несколько компонентов query с разными транзакциями. Возникает ошибка
Dynamic SQL error. error code = -502. Declared cursor already
exists. Я так понял, что возник конфликт транзакций.
Какие параметры надо поставить у транзакций, чтобы они не конфликтовали? Конфликта как такового быть не должно.
Desperado (2004-08-25 08:22:00) [1]To digitman & s999
Большое вам спасибо.
s999 (2004-08-24 10:55:00) [2]
> непонятно было что простая строчка randomize
> решит проблемы. Но как ни удивительно - решила.
Да ничего удивительного, просто иллюстрация того, что генератор случайных чисел есть генератор ПСЕВДОслучайных чисел. И использовать его для получения уникального идентификатора надо с осторожностью.
Повторю, для нормальной работы, скачай последнюю версию IBX:
http://codecentral.borland.com/codecentral/ccweb.exe/author?authorid=102
Digitman (2004-08-24 08:17:00) [3]
> Desperado © (23.08.04 17:24) [6]
те станд.компоненты прямого доступа, которые ты используешь, имеют исх.тексты, ничто не мешает оттрассировать проблемный вызов и понять, кто, где и какой курсор пытается редекларировать
Desperado (2004-08-23 17:24:00) [4]To s999
непонятно было что простая строчка randomize
решит проблемы. Но как ни удивительно - решила.
То Digiman
Расскажи как ты понимаешь эту ошибку и как предполагаешь с ней
бороться? Если это, действительно, из-за курсоров,
как ты говоришь.
Digitman (2004-08-23 17:15:00) [5]
> вызвал commit всех открытых транзакций
при коммите НД закрываются, однако ..
s999 (2004-08-23 17:05:00) [6]
> Я использую Delphi5, компоненты с вкладки Interbase.
> СУБД - Interbase 6.5
Ну вот, оно самое.
> добавить где-нибудь
> при инициализации Randomize " - не понял.
Просто добавь где-нибудь строчку, что непонятного то?
Но лучше обнови IBX(это - "компоненты с вкладки Interbase"), для D5 по-моему последняя версия это 5.04.
Desperado (2004-08-23 16:54:00) [7]To s999
Я использую Delphi5, компоненты с вкладки Interbase.
СУБД - Interbase 6.5
" если это невозможно, то workaround - добавить где-нибудь
при инициализации Randomize " - не понял.
To Digitman
Большое "спасибо" за перевод. Английский я тоже знаю, так что
Америку ты не открыл. Как понял, что из-за транзакций - перед вызовом оператора, в котором была ошибка, вызвал commit всех открытых транзакций.
p.s. Все набоы данных разные с разными транзакциями
Digitman (2004-08-23 16:26:00) [8]
> Declared cursor already
> exists. Я так понял, что возник конфликт транзакций
любопытное умозаключение ... буржуйская фраза переводится как "объявленный курсор набора данных уже существует", но в ней нет ни слова про транзакции ...
s999 (2004-08-23 15:42:00) [9]Сервер IB? Компоненты доступа IBX?
Если так, то это не конфликт, а баг в старой версии IBX. Лечение:
обновить версию IBX, если это невозможно, то workaround - добавить где-нибудь при инициализации Randomize;