之所以说经典,是因为我搜索了很久也没有看到合适的答案。原因可能有很多,有人说是系统补丁,也有可能说是数据库。在这里,我先把我的问题简单描述一下:

第一步,我用如下Perl 脚本去查询MySQL数据库(^@^ 非常简单的代码!)

==========================================================

use DBI;

my $dbname = "bugs";

my $location = "localhost";

my $port = "3306"; #这是mysql的缺省

my $database ="DBI:mysql:$dbname:$location:$port";

my $db_user = "root";

my $db_pass = "root";

my $dbh =DBI->connect($database,$db_user,$db_pass);

my $sql = "SELECT * FROMaudit_log";

my $sth = $dbh->prepare($sql);#准备

$sth->execute() or die "无法执行SQL语句:$dbh->errstr";#执行

while (@data = $sth->fetchrow_array()){#fetchrow_array返回row

         print"Email:$data[0]\t Telephone:$data[1]\n";    

}

$sth->finish();

$dbh->disconnect;#断开数据库连接

==========================================================

 

第二步,我用命令行执行,结果正常

 

wKioL1Up1YDyOnsjAAE6s9XbIw0697.jpg

第三步,配置IIS,增加一个Handler,如下:

wKiom1Up1DbSA8RLAAR22ioH2Zw329.jpg

wKioL1Up1Yeh8mOnAAQuwwev9Ew325.jpg

wKioL1Up1YixPOWCAAHrT9CneaA583.jpg

第四步,在浏览器中打开Perl 脚本(注:可以暂时忽略前面那个错误提示:The specified CGI application misbehaved by not returning a completeset of HTTP headers.

 wKiom1Up1EDR9fKQAAX8_pKb8c8192.jpg


奇怪的地方就是:Perl 命令行执行没有任何问题,为什么用IIS执行就出现数据库连接错误呢?我曾经也尝试过如下配置:

C:\Perl\bin\perl.exe "%s" %s

C:\Perl\bin\perl.exe %s