Issuing rollback() for database handle being DESTROY'd without

Apache2 + mod_perl2 + Class::DBI の環境で掲題のエラーが Apacheのログに出力されました。

Issuing rollback() for database handle being DESTROY'd without
explicit disconnect() ...


検索したところ、今回の原因については以下のあたりで当たりました。

http://coding.derkeiler.com/Archive/Perl/perl.dbi.users/2004-02/0129.html
http://coding.derkeiler.com/Archive/Perl/perl.dbi.users/2004-02/0187.html
http://blog.doofah.biz/?cat=34
http://diary.awm.jp/~yoya/?2002053
http://www.easysoft.com/developer/languages/perl/dbd_odbc_tutorial_part_1.html


今回の現象
AutoCommit を Off にしていて SELECT文 もトランザクション扱いとなった。
SELECT文 なので commit/rollback しなかったら、デストラクタ(DESTROY)が実行された時点で、トランザクションが正常に終了されていない。という警告メッセージが出力されました。


一時的な対策
$dbh->{Warn} = 0;
とすることで、警告が出なくなる。。がオススメできない。
http://coding.derkeiler.com/Archive/Perl/perl.dbi.users/2004-02/0129.html


抜本的な対策
SELECT時にもトランザクションを意識してcommitを発行する。。で本当にいいの?