操作系统:Mac 10.12.1,mysql 5.7.15
perl -e 'print $];' 5.016000
错误讯息:
Can't locate DBD/mysql.pm in @INC (you may need to install the DBD::mysql module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at ./testDBConnection.pl line 8. BEGIN failed--compilation aborted at ./testDBConnection.pl line 8.
源代码:
#!/usr/bin/perl
#use lib '/usr/bin/cpan';
use strict;
use FileHandle;
use File::Spec;
use DBI;
use DBD::mysql;
当我跑步时:cpan DBD::mysql
Reading '/Users/user/.cpan/Metadata'
Database was generated on Fri, 18 Nov 2016 19:41:02 GMT
DBD::mysql is up to date (4.039).
当我跑步时:perldoc -lm DBI DBD::mysql
/Users/user/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/darwin-2level/DBI.pm
/Users/user/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/darwin-2level/DBD/mysql.pm
有什么建议吗?
答案 0 :(得分:3)
你的shebang线是指/usr/bin/perl
。这是将用于执行脚本的解释器。
/usr/bin/perl
是系统附带的perl
。你没有弄乱随附的模块,而是安装自己的模块,从而做到了正确的事情。现在,您应该告诉您的脚本使用它。
看起来您的路径中已经存在正确的perl
。使用which perl
查看完整路径。
作为旁注,实际上没有理由
use DBD::mysql;
线。 DBI
将根据您的连接字符串选择要加载的驱动程序。
有关shebang lines的更多信息,请参阅my answer on a different question。
brian d foy的{p> Make links to per-version tools可能有所帮助。我个人认为像perlbrew
这样的工具更多的是障碍而不是帮助。
答案 1 :(得分:0)
我想你已回答了自己的问题。 perldoc
告诉您DBI:mysql安装在/Users/user/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/darwin-2level/DBD/mysql.pm
中,而perl告诉您INC
不包含该路径。
最简单的解决方案是运行perl -I <path above>
或use lib <path above>;
。我确信这是一个更好的解决方案,但这足以让你开始解决自己的问题。