我将当前类中的一个名为 'dbc' 的属性委托为 DBIx::Connector,以便我可以从内部方法调用 $self->dbc->dbh,但是我并没有真正理解我看到的一些行为在 DBI::db 实例上调用 'errstr' 方法时:
这个:
eval {
$dbh->do($sql);
};
$self->log->warn("Warning SQL error: $dbh->errstr") if ($@);
返回WARN - Warning SQL error: DBI::db=HASH(0xaf43130)->errstr
但是,这可行,并返回正确的错误字符串:
eval {
$dbh->do($sql);
};
if($@){
my $errstr = $dbh->errstr;
$self->log->warn("Warning SQL error: $errstr");
}
这里发生了什么事?