2

当我运行我的脚本时,我得到了错误:

Use of uninitialized value in die at /usr/local/bin/tacms/subscriptionScheduler.pl line 101.
Died at /usr/local/bin/tacms/subscriptionScheduler.pl line 101.

第 101 行是这样一行:

$contentRow = $contentSth->fetchrow_hashref() or die $dbh->errstr;

澄清一下,当我更改关键字时会出现此错误。如果我使用我的测试关键字VERSETEST AND QUOTETEST,我不会收到此错误。但是当我使用关键字时VERSE and QUOTE,我遇到了这个错误。

有人可以帮我解决这个问题吗?

4

1 回答 1

6

当没有更多行要fetchrow_hashref返回时,返回是完全正常的。undef既然$dbh->errstr也回来undef了,那一定是发生了什么事。

这就是我通常将该RaiseError属性设置为 true 的原因,这样我就不必在每次调用 DBI 后检查错误。这样,我知道fetchrow_hashref返回时undef它表示结果结束而不是错误。

如果不使用RaiseError,可以如下检查错误:

unless ($contentRow = $contentSth->fetchrow_hashref()) {
  die $dbh->errstr if defined($contentSth->err);
  print "No more results\n"; # if we get here
} 
于 2012-06-18T09:06:28.237 回答