<pre name="code" class="sql">jrhxpt01:/root# cat dbi.pl
use DBI;
#!/usr/bin/perl
$db_name='test';
$ip='127.0.0.1';
$user="root";
$passwd="a2p13mvh";
$dbh="";
$dbh = DBI->connect("dbi:mysql:database=$db_name;host=$ip;port=3306",$user,$passwd, {
RaiseError => 1,
AutoCommit => 0
}) or die "can't connect to database ". DBI-errstr;
##Connect
eval{
$dbh->do("insert into t1 values(2)");
print "111111111
";
$dbh->do("insert into t1 values(3)");
print "22222222
";
$dbh->do("insert into t1 values(4)");
print "33333333
";
$dbh->do("insert into t1 values(5)");
print "444444444
";
$dbh->do("insert into t1 values(6)");
print "555555555
";
$dbh->do("insert into t1 values(6)");
print "66666666
";
#$dbh->do("insert into t1 values(1)");
$dbh->commit();
};
if( $@ ) {
warn "Database error: $DBI::errstr
";
$dbh->rollback(); #just die if rollback is failing
}
jrhxpt01:/root# perl dbi.pl
111111111
22222222
33333333
444444444
555555555
DBD::mysql::db do failed: Duplicate entry '6' for key 't1_idx1' at dbi.pl line 25.
Database error: Duplicate entry '6' for key 't1_idx1
~
~ 启用RaiseError 错误处理属性,以便这些错误用一条错误消息就能自动地终止相应的脚本。