Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Конфликты транзакций


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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо