2012-04-09 148 views
1

我试图将数据写入到使用Perl MySQL数据库。然而,当我运行我的脚本,我得到以下错误:为什么我得到一个错误,当我尝试使用Perl的DBD :: mysql的?

Can't locate loadable object for module DBD::mysql in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at LargeLDAPSearch.pl line 10.

我确实有这些“使用”的语句和下面的代码。这只是一个小片段,因为脚本的工作之前,我尝试了DB连接:

use DBD::mysql; 
use strict; 
use warnings; 
my $query_handle; 

my ($platform,$database,$host,$port,$db_user,$pw) = ("mysql","results","localhost","3306","root","mysql123"); 

my $dsn = "dbi:$platform:$database:$host:$port"; 

my $connect = DBI->connect($dsn,$db_user,$pw) || die "Could not connect to database"; 

my $query_insert = "INSERT INTO " . $dbname . "(uid,status,lstpwdset,reset) VALUES (" . $strSAMA . "," . $strAcctControl . "," . $pwLS . "," . $reset . ")"; 

$query_handle = $connect->prepare($query_insert); 
$query_handle->execute(); 

我已经为我的Perl文件夹在我的地方,并搜查的lib文件 目录。在/lib/子文件夹中,我有两个文件夹,一个DBI和DBD 子文件夹,我在DBD MySQL的子文件夹中,并与DBI下 MySQL的子文件夹的子文件夹DBD。 /lib/DBD/mysql/ &`/ lib/DBI/DBD/mysql /``

这可能是错误,fodlers在两个地方。我去CPAN网站,并尝试手动6.在安装步骤,我收到DBI关于SQLLite安装错误。

+0

我有同样的问题。但是,似乎ActiveState perl可以与安装的DBDLite一起使用。我可以使用或不使用YUM安装perl-DBD-MySQL。也可以在我的脚本中使用和不使用DBD :: mysql。我在运行Perl脚本的盒子上安装了MySQL(在遇到错误之后)。不确定MySQL是否提供了任何库文件等来提供帮助。 – guest 2017-06-30 15:18:07

+0

您是否安装了'DBI'和'DBD :: mysql'?如果是这样,你是怎么做到的?这个错误听起来像'DBD :: mysql'没有安装或安装不正确。 – 2012-04-09 16:17:44

+0

当我运行MakeFile.pl时,我得到这个 '代码看起来你的PATH上没有C编译器,所以你不能在 中编译C或XS扩展模块。您可以通过运行使用Perl的包管理器 MinGW的包安装GCC: PPM安装MinGW的 检查,如果你的包是完整的...... 看起来不错 写Makefile文件数据:: ShowTable 写作MYMETA.yml和MYMETA.json 按任意键继续。 。 .' 运行CMD安装DBI错误: '代码PPM安装DBI PPM安装失败:install_driver(SQLite的)失败:DBD :: SQLite的对象版本1.33不匹配的引导参数1.35' – cquadrini 2012-04-09 17:21:08

回答

5

使用

C:\> ppm install DBI 
C:\> ppm install DBD::mysql

你似乎是使用的ActivePerl安装DBIDBD::mysql,所以用它为您提供的设施。

DBD::mysql也确实会带来documentation

From perl you activate the interface with the statement

use DBI; 

After that you can connect to multiple MySQL database servers and send multiple queries to any of them via a simple object oriented interface. Two types of objects are available: database handles and statement handles. Perl returns a database handle to the connect method like so:

my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host", 
        $user, $password, {RaiseError => 1}); 
+0

我给你一个和这个答案的检查。但由于某种原因,我的Active Perl Package Manager未加载。我重新启动了电脑,但仍然没有。我将卸载它并重新安装,然后通过CPAN重新安装插件。 – cquadrini 2012-04-10 14:06:55

+0

正如我之前所说:*您似乎已经安装了ActivePerl。 'ppm'使用SQLite数据库来保存已安装模块的信息。不知何故,它加载的SQLite DLL版本低于发行版的DBD :: SQLite所针对的版本。* – 2012-04-10 14:09:02

+0

从CPAN或其他供应商下载版本1.35? – cquadrini 2012-04-10 14:22:51

3

不要use DBD::mysql。做只是use DBI。它会自动加载你的MySQL驱动程序。

+0

Gah!谢谢。修复。 – Alberto 2012-04-09 16:01:52

+0

我试过,以及我发表之前,我得到这个错误: '代码install_driver(mysql)失败:找不到可加载的对象模块DBD :: mysql in @INC(@INC contains:C: (eval 12)第3行中的/ Perl/site/lib C:/ Perl/lib。)。 编译失败,需要在(eval 12)第3行,第2行。 也许DBD :: mysql需要hasn '没有完全安装' 也许我没有正确安装它。不知道为什么我在这个问题上得到-1。 – cquadrini 2012-04-09 17:11:59

相关问题