之所以說經典,是因爲我搜索了很久也沒有看到合適的答案。原因可能有很多,有人說是系統補丁,也有可能說是數據庫。在這裏,我先把我的問題簡單描述一下:
第一步,我用如下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