powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl + DBI + exception + eval
1 сообщений из 1, страница 1 из 1
Perl + DBI + exception + eval
    #32769347
Alex2005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем. У меня вот какая проблема. Скрипт на перле пытается обновлять информацию в базе. База на интербейзе. При этом запись, которую он пытается обновить заблокирована незавершенной транзакцией. В DBI транзакция типа WAIT которая ждет завершения предыдушей и когда предыдущая коммитится моя отваливается по deadlock. При этом DBI коннектится так, что при этом происходит исключение. Я это исключение перехватываю через eval, завершаю предыдущий запрос и посылаю новый, но он как ни странно тоже отваливается по deadlock причем моментально. Вероятность того, что нужная запись опять заблокирована другой транзакцией практически равна нулю. Может кто сталкивался, подскажите в чем трабла.
Кусок кода прилагается:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
my $db = DBI->connect("dbi:InterBase:dbname=$config{DBPATH};ib_dialect=3;ib_role=$config{DBROLE};",
 $config{DBLOGIN}, $config{DBPASSWD}, {RaiseError =>  1 , PrintError =>  0 , AutoCommit =>  0 });

my $st = $db->prepare("execute procedure E_FILTER_USER_MAC($id1)");

eval {$st->execute();};
if ($@)
{
	$st->finish();
	sleep  1 ;

	my $st2 = $db->prepare("execute procedure E_FILTER_USER_MAC($id1)");
	$st2->execute();
	$st2->finish();
}

$st->finish();
$db->disconnect();
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Perl + DBI + exception + eval
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]