之所以说经典,是因为我搜索了很久也没有看到合适的答案。原因可能有很多,有人说是系统补丁,也有可能说是数据库。在这里,我先把我的问题简单描述一下:
第一步,我用如下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;#断开数据库连接
==========================================================
第二步,我用命令行执行,结果正常
第三步,配置IIS,增加一个Handler,如下:
第四步,在浏览器中打开Perl 脚本(注:可以暂时忽略前面那个错误提示:The specified CGI application misbehaved by not returning a completeset of HTTP headers.)
奇怪的地方就是:用Perl 命令行执行没有任何问题,为什么用IIS执行就出现数据库连接错误呢?我曾经也尝试过如下配置:
C:\Perl\bin\perl.exe "%s" %s
C:\Perl\bin\perl.exe %s