フレームワーク (9) - DBIx::Simple::DeadObject

フレームワーク (9) - DBIx::Simple::DeadObject #

今日は DBIx::Simple 周り
DB 関連のエラー拾うために、よく

$dbh->select(…) or die $dbh->error;

とかするが、わざとエラーにしてみるために

$dbh->disconnect;
$dbh->select(…) or die $dbh->error;

してみたら、

Database object no longer usable (because of …)

と返ってきたので、さらに実験

 use DBIx::Simple;
 use Data::Dumper;
 
 my $dbh = DBIx::Simple->connect('dbi:SQLite:dbname=dum.db');
 print Dumper $dbh;
 
 $dbh->disconnect;
 print Dumper $dbh;

実行結果

 $VAR1 = bless( {
                  'lc_columns' => 1,
                  'dbh' => bless( {}, 'DBI::db' ),
                  'dbd' => 'SQLite'
                }, 'DBIx::Simple' );
 $VAR1 = bless( {
                  'what' => 'Database object',
                  'cause' => 'DBIx::Simple=HASH(0x812c15c)->disconnect at db.pl line 7'
                }, 'DBIx::Simple::DeadObject' );

おー、なるほど

 if ( ref $dbh eq 'DBIx::Simple::DeadObject' ) {
   print 'DB object has been already a-born.';
   undef $dbh;
 }

とかできるのね。使うことがあるかどうかはわからないけど

See Also

Copyright © 髭。/ Hugo + hugo-book