Mac OSX Perl在@INC.中找不到DBD::mysql



为了运行下面的代码,我已经通过sudo cpan install DBD::mysql安装了CPAN模块DBD::mysql,但我一直收到错误消息:

Can't locate loadable object for module DBD::mysql in @INC (@INC contains: 
  /sw/lib/perl5/5.12.3/darwin-thread-multi-2level
  /sw/lib/perl5/5.12.3
  /sw/lib/perl5/darwin-thread-multi-2level
  /sw/lib/perl5
  /sw/lib/perl5/darwin
  /Library/Perl/5.12/darwin-thread-multi-2level
  /Library/Perl/5.12
  /Network/Library/Perl/5.12/darwin-thread-multi-2level
  /Network/Library/Perl/5.12
  /Library/Perl/Updates/5.12.3/darwin-thread-multi-2level
  /Library/Perl/Updates/5.12.3
  /System/Library/Perl/5.12/darwin-thread-multi-2level
  /System/Library/Perl/5.12
  /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level
  /System/Library/Perl/Extras/5.12
  .
)
at dbi_write.pl line 11
Compilation failed in require at dbi_write.pl line 11.
BEGIN failed--compilation aborted at dbi_write.pl line 11.

这是我的代码

#!/usr/bin/perl
#use lib '/usr/bin/cpan';
use strict;
use FileHandle;
use File::Spec;
use DBI;
use DBD::mysql;

您的CPAN安装成功了吗?如果是这样,那么对于您正在运行的Perl版本,该模块安装在了错误的位置。

查看CPAN日志以查看DBD::mysql的安装位置。答案就在那里,修复取决于它安装在哪里,以及为什么它不在Perl的@INC中。

您有多个Perl安装吗?

顺便说一句,你不需要use DBD::mysql。当您调用指定MySQL源的DBI->new时,DBI将自动加载它。这以在运行时加载驱动程序模块为代价来整理代码——这是一个很小的代价。

我通过以下操作解决了这个问题:

将libmysqlclient.18.dylib复制到/usr/lib/中

此外,在我的Mac OS X中有两个不同的Perl。一个在/usr/local/ActivePerl5.16/中,另一个在/Systems/Library/Per/Perl5.12 中

最新更新