将 MySQL 与 Perl 连接时出错

Error connecting MySQL with Perl

我想使用 DBI 将 MySQL 与 Perl 连接起来。 问题是每当我尝试使用 CGI 连接到 MySQL 时,都会出现此错误:

Software error:
install_driver(mysql) failed: Can't load 'C:/xampp/perl/vendor/lib/auto/DBD/mysql/mysql.dll' for module DBD::mysql: load_file:%1 is not a valid Win32 application at C:/xampp/perl/lib/DynaLoader.pm line 190.
 at (eval 6) line 3.
Compilation failed in require at (eval 6) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at C:/xampp/htdocs/samples/insert1.cgi line 16.

这是我的代码:

#!"C:\xampp\perl\bin\perl.exe"

use strict;
use warnings;
#include libraries
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
 
print "Content-type: text/html\n\n";
 
## mysql user database name
my $db ="mysql";
## mysql database user name
my $user = "root";
 
## mysql database password
my $pass = "";
 
## user hostname : This should be "localhost" but it can be diffrent too
my $host="localhost";
 
## SQL query
my $query = "show tables";
 
my $dbh = DBI->connect("DBI:mysql:$db:$host", $user, $pass);

 my $sqlQuery  = $dbh->prepare($query)
 or die "Can't prepare $query: $dbh->errstr\n";
 
my $rc = $sqlQuery->execute
or die "can't execute the query: $sqlQuery->errstr";
 #start the HTML
print "Content-type:text/html\r\n\r\n";

print "<HTML>";
print "<HEAD>";
print "<TITLE>GeneMIS</TITLE>";
print "</HEAD>";
print "<BODY bgcolor=white>";
print "<h3>********** My Perl DBI Test ***************</h3>";
print "<p>Here is a list of tables in the MySQL database $db.</p>";
while (my @row= $sqlQuery->fetchrow_array()) {
my $tables = $row[0];
print "$tables\n<br>";
}
 
my $rc = $sqlQuery->finish;


#end the HTML
print "</BODY></HTML>";
exit(0);

我的 DBI 工作正常,文件夹中已经有 mysql.dll。 我已经将路径包含在环境变量中,但它仍然无法正常工作。

我找到了解决此错误的方法。 首先,我删除了 xampp 文件夹 中的 perl 文件夹,然后将 perl 文件夹 复制到草莓文件夹xampp文件夹

删除 C:\xampp\perl中的perl文件夹

然后去 C:\strawberry 并将 perl 文件夹复制到 C:\xampp

然后重新启动 xampp 并再次 运行 程序。