プロが教えるわが家の防犯対策術!

active perlでdbi-connect処理から戻ってきません。教えてください。
以下のテスト的なプログラムで試しました。
Xには、数字が入ります。(会社のファイルサーバーになります)
DBI->connectから戻ってきていないようです。(hhhhhhhhが表示されません)
ちなみにDBI->connectをコメントにすれば表示されます。

申し訳ありませんが、どなたかご存知の方いらっしゃらないでしょうか?
エラーがかえってこないと、何が悪いかわかりません。
困っています、宜しくお願いします。

ちなみにPerlは、Ver. 5.8.7.813でdbi,dbd-oracleは、昨日ppmでダウンロードしました。

# DBへコネクトする
my $datasource = 'dbi:oracle:usrDB:xxx.xxx.x.xx:8080' ;
my $usr = 'usrname' ;
my $pass = 'usepass' ;

my $dbh = DBI->connect($datasource,$usr,$pass) ;
print "hhhhhhhhhhhh\n" ;
if( ! $dbh ){
print "gggggggggggg\n" ;
}
$dbh->disconnect();

A 回答 (1件)

http://search.cpan.org/~pythian/DBD-Oracle-1.27/ …
ここらへんを見ると
$dbh = DBI->connect("dbi:Oracle:host=xxx.xxx.xxx.xxx;sid=usrDB;port=8080",$user, $pass);
みたいに書くようですよ。ただ、Oracleは使ったことないんで間違っているかもしれません。

ところで、8080ポートに接続しているということはWebプロキシに接続に行っているみたいなんですが、ポート番号は合っていますか?

ちなみに、SQLiteの例ですが、トレースを出したいときは以下のようにします。Oracleでも似たような出力を出すことができると思います。以下、表示がくずれすので空白2文字を全角空白で書いていることに注意。
use strict;
use warnings;
use DBI;

# DB Name
my $db_name = 'sqlite_test.db';

# Disable buffering
$| = 1;

# Connect to the database
my $dbh = DBI->connect(
  'dbi:SQLite:dbname=' . $db_name,
  '', '',
  {  PrintError => 1,  ### Do report errors via warn()
    RaiseError => 0,  ### Don't report errors via die()
    TraceLevel => 5
  }
) or print DBI->errstr;

# Disconnect from the database
$dbh->disconnect;

これを実行すると以下のような出力が出てきます。
DBI::db=HASH(0x9dda3a8) trace level set to 0x0/5 (DBI @ 0x0/0) in DBI 1.605-ithread (pid 4982)
<> FETCH= 5 ('TraceLevel' from cache) at /usr/lib/perl5/DBI.pm line 693
-> STORE for DBD::SQLite::db (DBI::db=HASH(0x9dda3a8)~INNER 'Username' '') thr#9c7d008
....
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!