将 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 并再次 运行 程序。
我想使用 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 并再次 运行 程序。