为什么我使用Perl的DBI-> connect会无声地失败?

Nic*_*ton 3 perl dbi

为什么这段代码会无声地失败?我如何让它向我展示SQL错误究竟是什么?

$dbh=DBI->connect($db_name,$db_user,$db_pass);
Run Code Online (Sandbox Code Playgroud)

我将代码修改为如下所示:

$dbh=DBI->connect($db_name,$db_user,$db_pass)
    or die("could not connect to db: $db_name");
Run Code Online (Sandbox Code Playgroud)

而不是允许我使用$dbh未分配的,它将按预期失败,但它并没有告诉我它为什么失败.$db_name就我所见,etc 的值都设置为有效值.

我知道真正的错误(MySQL服务器实际上没有运行)但是为了将来的参考,我希望看到真正的错误,例如我导致auth失败.

bri*_*foy 8

你没有看到connect失败的原因,因为你没有做DBI给你做的事情.错误将在$DBI::errstr变量中:

$dbh = DBI->connect($data_source, $username, $password)
     or die $DBI::errstr;
Run Code Online (Sandbox Code Playgroud)

确保您阅读了要使用的任何功能或方法的文档.:)