为了运行下面的代码,我已经通过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 中