Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > [Perl, DBI, MySQL] connect и rollback, странность


Автор: ochnev 20.4.2007, 03:21
Перловый CGI-скрипт отрабатывает нормально, но в логе ошибок Apache каждый раз появляется такая запись:
Цитата

[Thu Apr 19 23:43:25 2007] search_results.pl: Issuing rollback() for database handle being DESTROY'd without explicit disconnect() at DBOperations.pm line 51., referer:

("referer" опущен)

Строка 51, упомянутая в логе:
Код

$dbh->{mysql_auto_reconnect} = 1;

(непосредственно после connect'а)

"mysql_auto_reconnect" мне нужен для других скриптов того же сайта. Те скрипты работают как FastCGI, и им нужен постоянный коннект, который без "mysql_auto_reconnect" периодически некрасиво отваливался.
Этот скрипт - единственный, с которым возникает такая проблема, хотя "mysql_auto_reconnect" устанавливается везде для всех (и FastCGI, и CGI-скриптов) точно так же. Просто в модуль вынесены все операции с БД.

Вопрос:
Что может значить та ошибка и как её можно устранить?

Автор: djkostya 21.4.2007, 09:20
Я лично не работал с транзакциями из PERL только из хранимых процедур работал
Но вам надо после каждой втавки и удаления вызывать commint $rc  = $dbh->commit; то есть фиксацию данных или $rc  = $dbh->rollback;
наоборот не фиксировать данные....

Автор: ochnev 21.4.2007, 15:53
В том скрипте делается только SELECT.
Единственное, что в нём такого особенного, это использование fulltext индекса для поиска.

Автор: KSURi 22.4.2007, 16:24
Укажи AutoCommit => 1 при создании DBI объекта

Автор: ochnev 22.4.2007, 19:01
Помогло.
Там почему-то AutoCommit => 0 стоял (я что-то забыл в начале), а при нём auto reconnect вообще не работает, насколько я помню из доков.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)