2013-12-13 12 views
11

を見つけることができません:私はこのスクリプトを起動するとは、私はこのスクリプトを起動しようとしているDBI.pm

#!/usr/bin/perl 

use DBI; 

my $dbh = DBI->connect('dbi:Oracle:host=lonlin2;sid=TIMFX1AD;port=1524','xbsesdbo','xbsesdbo123') || die ($DBI::errstr . "\n"); 

my $query= "SELECT * FROM product_elements WHERE element_id = 1001"; 
my $queryHandler= $dbh->prepare($query); 

my $result= $queryHandler->execute(); 


open(fileHandler,"> note.txt"); 

print fileHandler "Risultato query: $result\n"; 

my $e= $dbh->disconnect(); 
close(fileHandler); 

私はこのエラーが表示されます。

Can't locate DBI.pm in @INC (@INC contains: /opt/perl_32/lib/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/5.8.3 /opt/perl_32/lib/site_perl/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/site_perl/5.8.3 /opt/perl_32/lib/site_perl /opt/perl_32/lib/vendor_perl/5.8.3/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/vendor_perl/5.8.3 /opt/perl_32/lib/vendor_perl .) at ./prova.pl line 3.

私がインストールされているすべて持っています! ! DBI.pmがインストールされています!

+3

を、あなたが使用してインストールのいずれか/を別の 'perl'のために使うか、Perlに非標準のディレクトリにインストールするように指示し、そのディレクトリを調べるために' perl'に指示していません。 1)どうやってインストールしましたか? 2) 'DBI.pm'の完全なパスは何ですか? – ikegami

+0

コマンド 'perldoc -l DBI'を試してください。 DBI.pmがインストールされていてPerlのインクルードパスにある場合は、インストールの場所が表示されます。システムに複数のPerlがインストールされている可能性があり、誤ったPerlにアクセスしている可能性があります。あなたのシバンラインはどうですか?私は '#!/usr/bin/env perl'を実行して、私のパスが使用するPerlのバージョンを取得し、[Perlbrew](http://perlbrew.pl)を使用して複数のPerlバージョンを処理します。 –

+0

上記のエラーメッセージに記載されているディレクトリのどれがインストールされていますか? – runrig

答えて

1

DBIは、@INCパスにはありません。これは、カスタムモジュールを探す場所をperlに指示します。これは、ルート以外のユーザーとしてcpanツールを使用してインストールしたためです(デフォルトのインクルードパスへの書き込みアクセス権はありません)。

DBI.pmと他のパッケージを探して、@INCパスに移動する必要があります。また

、あなたがインストールしたパッケージを見つけると、1回の使用のために、あなたのライブラリー・パスにインストールパスを追加します。

PERL5LIB=/path/to/modules perl yourscript.pl 

そして、より恒久的な解決のために、~/.bashrcにこれを追加します。

export PERL5LIB=/path/to/modules 
+0

DBIパッケージのパスをどのように見つけることができますか? – chaw359

+0

@ chaw359 'find/-name 'DBI.pm' 2>/dev/null'はUNIXのようなOS上で動作します。 –

+0

@ chaw359 - どのようにインストールしましたか? – Quentin

4

あなたがアクティブなPerlを持っていない(したがって、PPMを持っていない)場合は、あなたも、このようにDBIを取得することができます:

perl -MCPAN -e 'install DBI' 

あなたはこのようなPostgresのためのドライバをインストールする必要があります。

perl -MCPAN -e 'install DBD::Pg' 
14

ルート、コンソールのタイプ(Debianの/ Ubuntuの)持っている場合:あなたはそれをインストールした場合

sudo apt-get install libdbi-perl 
関連する問題