|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.06.2013, 18:46 | #1 |
Пользователь
Регистрация: 21.01.2010
Сообщений: 37
|
Динамические имена транзакций
Делаю приложение базы данных с мультидоступом, все транзакции имеют свойства:
read_committed rec_version nowait Но выкидывает deadblock с 2 компьютера, если одновременно заходить. Решил не париться и попробовать сделать генерируемые имена транзакций чтоб они друг на друга не натыкались. Но делфи ругается: Типы: rtrans:string; newname:string; Код: for i:=1 to n do rtrans:=rtrans+Char(byte('A')+rando m(2)*32+random(26)); ibtransaction1.Name:='Transaction'+ rtrans; newname:='Transaction'+rtrans; newname.StartTransaction; // в этой строке на неизвестный идентификатор P.S: помогите может можно проще deadblock решить |
09.06.2013, 19:55 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Садись в позу увядшего лотоса - будем твой моск сканировать.
I'm learning to live...
|
|
09.06.2013, 20:20 | #3 |
Пользователь
Регистрация: 21.01.2010
Сообщений: 37
|
|
09.06.2013, 20:56 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Знач по теме Во-первых: ibtransaction1.Name:='Transaction'+ rtrans; это не имя транзакции. Это всего лишь имя компонента. Во-вторых: дедлок получается только при определенных условиях, по факту не особо зависящих от Делфи, или в чем ты работаешь. Нужно знать какие запросы и куда идут в этих транзакциях.
I'm learning to live...
|
|
09.06.2013, 21:56 | #5 | ||
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
динамические имена тебя на спасут.
Цитата:
Цитата:
а какой смысл с двух разных компов заходить в одну и ту же запись?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... |
||
09.06.2013, 23:21 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Я поэтому и хочу узнать подробности от автора темы. Хотя если автор правильно пишет коммит транзакции, как Юра заметил без старта ее, то IB мог бы на это реагировать неадекватно.
I'm learning to live...
|
|
10.06.2013, 00:55 | #7 |
Пользователь
Регистрация: 21.01.2010
Сообщений: 37
|
Отказался я от динамических транзакций и стал пытаться разобраться с ними.
Вот код 2 форм: 1Форма: http://rghost.ru/private/46639194/c8...e13f88ba28ec1b 2Форма: http://rghost.ru/private/46639201/b6...9b5f3f9a048fde Щас вообще стер все что писал про транзакции ибо не получается ничего то deadblock, то где-то выскакивает transaction active, not active хотя по коду все норм. Посмотрите пожалуйста. Вот инфа о самих транзакциях: AllowAutoStart:=true; read_committed rec_version nowait 1форма - ibtable1 - ibtransaction1, ibquery1 - ibtransaction1 2форма - ibtable1 - ibtransaction1, ibtable2 - ibtransaction2, ibtable3 - ibtransaction3, ibquery1 - ibtransaction4, ibquery2 - ibtransaction3 P.S: обновление записей происходит только в таблицах (compared_table) и ('TABLE'+inttostr(exet)); Код:
Последний раз редактировалось Moneo; 10.06.2013 в 01:01. |
10.06.2013, 07:41 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Никогда не знал что с Table можно использовать транзакции. Просто предположу - дедлок возникает, если записи на выборку или запись недоступны. Table по своей сути блокирует всю таблицу. Вывод - либо пользоваться query либо поискать среди свойств Table что-то что работает с кэшированием. Сам я его никогда не использовал, но слышал о такой возможности.
I'm learning to live...
|
|
10.06.2013, 09:16 | #9 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
альтернатива: попробовать IBDataSet
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... |
10.06.2013, 13:00 | #10 |
Пользователь
Регистрация: 21.01.2010
Сообщений: 37
|
Сегодня стер все транзакции и оставил только commit где данные обновляются и воспроизвел ситуацию вчерашнего дэдблока и вуаля сегодня все хорошо работает. В чем может быть проблема?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические имена | varyat | SQL, базы данных | 3 | 31.08.2011 11:52 |
лог транзакций ФБ | alex_-87 | БД в Delphi | 7 | 13.07.2010 14:09 |
Построение графа транзакций. | Alex_sim | Общие вопросы .NET | 7 | 29.04.2010 21:58 |
закрытие транзакций | ancia | Lazarus, Free Pascal, CodeTyphon | 3 | 11.03.2010 16:12 |
Что делать, если имена полей динамические? | Rock'n'rolla | Работа с сетью в Delphi | 1 | 25.01.2010 14:56 |