2016-11-19 177 views
2

操作系統:Mac 10.12.1中,MySQL 5.7.15即使cpan告訴我DBD :: mysql已安裝,爲什麼我的Perl腳本找不到DBD/mysql.pm?

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

看起來像你正在使用perlbrew。查看https://perlbrew.pl/ –

+0

嘗試直接使用perl運行腳本:'perl script.pl'。另外,將你的shebang行改爲'#!/ usr/bin/env perl'也可以解決它的問題 – stevieb

+0

@stevieb問題在於OP告訴shell使用'/ usr/bin/perl'來執行腳本。腳本,shell和環境都在OP的控制之下。無需解決方法。 –

回答

3

你的shebang線是指/usr/bin/perl。這是將用於執行腳本的解釋器。

/usr/bin/perl是您的系統附帶的perl。你做了正確的事情,而不是搞亂它附帶的模塊,而是安裝你自己的模塊。現在,你應該告訴腳本使用它。

它看起來像正確的perl已經在你的路徑。使用which perl查看完整路徑。

作爲一個方面說明,我們實在沒有理由

use DBD::mysql; 

線。 DBI將根據您的連接字符串選擇要加載的驅動程序。

欲瞭解更多關於shebang lines,請參閱my answer on a different question

Make links to per-version tools by brian d foy may help。我個人發現,諸如perlbrew之類的工具比幫助更成爲一種障礙。

+1

謝謝,這現在正在爲我工​​作。 – user1256378

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>;。我相信有更好的解決方案,但這足以讓你開始解決自己的問題。

+0

感謝Mort提供的技巧。 – user1256378

相關問題