繁体   English   中英

即使cpan告诉我已安装DBD :: mysql,为什么我的Perl脚本也找不到DBD / mysql.pm?

[英]Why can't my Perl script locate DBD/mysql.pm even though cpan tells me DBD::mysql is installed?

操作系统: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

有什么建议么?

您的shebang行引用/usr/bin/perl 那就是将用来执行脚本的解释器。

/usr/bin/perl是系统随附的perl 您通过不弄乱它随附的模块,而是安装了自己的模块,来做对了事情。 现在,您应该告诉脚本使用它。

看起来正确的perl已经在您的路径中了。 使用which perl查看它的完整路径。

顺带一提,实际上没有任何理由

use DBD::mysql;

线。 DBI将根据您的连接字符串选择要加载的驱动程序。

有关shebang线路的更多信息,请参阅我对另一个问题的回答

通过brian d foy 链接到每个版本的工具可能会有所帮助。 我个人认为像perlbrew这样的工具比提供帮助更多的是障碍。

我认为您已经回答了自己的问题。 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>; 我相信有更好的解决方案,但这足以让您开始解决自己的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM