Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
482 views
in Technique[技术] by (71.8m points)

suppress stderr from perl DBI execute

my $sth = $dbh->prepare(q{
  INSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
}) or die $dbh->errstr;
while (<>) {
    chomp;
    my ($product_code, $qty, $price) = split /,/;
    $sth->execute($product_code, $qty, $price) or die $dbh->errstr;
}
$dbh->commit or die $dbh->errstr;

I dont want to show stderr from $sth->execute on console. how to supress it ?

question from:https://stackoverflow.com/questions/65913822/suppress-stderr-from-perl-dbi-execute

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is controlled by the PrintWarn and PrintError settings for DBI handles. I generally turn them off globally when establishing the initial database connection ($dbh = DBI->connect($data_source, $user, $pass, { PrintWarn => 0, PrintError => 0 });) because I prefer to do my own error-handling and reporting, but it is also possible to set them on a per-statement level, turn them off for a single execute and back on afterward, etc. by using the set_err method.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...