• ベストアンサー

DBIがうんともすんとも言いません だれか助けてください

症状: perlのプログラム内でDBIを使うと、その後の行がすべてスキップされてしまいます。エラーをだしてくれることもなく、何が原因なのかさっぱりわかりません。 「 #!/usr/bin/perl use DBI; print "Content-type: text/html", "\n\n"; print "this is test"; $d = 'DBI:mysql:test:Localhost';# データソース $u = 'root';# ユーザ名 $p = 'mypass';# パスワード # データベースへ接続 $dbh = DBI->connect($d, $u, $p) or print "Can't connect to MySQL"; print "<br />success!"; 」 「this is test」は表示されるのですが、「success!」が表示されないのです。もちろん「Can't connect to MySQL」も、その他のエラー表示も表示されません。 「 $dbh = DBI->connect($d, $u, $p) or print "Can't connect to MySQL"; 」 の行を消すと、「success!」も表示されます。 DBIを再インストールしたほうがよいのでしょうか? もともと、DBIをインストールするとき、いろいろてこずっていて、その時に何かおかしなことになってしまったのかもしれません。 それとも別の場所に問題があるのでしょうか。 ________________________________ 環境: Ubuntu8 Xampp ちなみにcpanで i DBIとやると、 「 CPAN: Storable loaded ok (v2.18) Going to read /root/.cpan/Metadata Database was generated on Fri, 20 Jun 2008 07:02:51 GMT Strange distribution name [DBI] Bundle Bundle::DBI (TIMB/DBI-1.605.tar.gz) Module = DBI (TIMB/DBI-1.605.tar.gz) 2 items found 」 とでます。 この問題のおかげでもう2日間作業がすすまないでいます。どなたか力をかしてください。おねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

DBD::mysqlモジュールが存在しない場合、エラーが標準エラー出力に出てしまうので、 print "Can't connect to MySQL"; の表示は出ないですね。evalでキャッチできないかやってみましたけれど、やっぱり標準エラー出力にエラーメッセージが出ただけでした。 インストールされているモジュールは、以下のやり方で確認できます。確認されてみてはどうでしょうか。 #!/usr/bin/perl # print "Content-type: text/plain\n\n"; print "perl version: $] (",sprintf("%vd", $^V),")\n\n"; BEGIN{ unshift(@INC,'./'); $ENV{'PERL5LIB'}='./'; } my @modules = qw( CGI DBI DBD::SQLite DBD::MySQL Encode DB_File SDBM_File Switch NOMODULE ReadOnly ); foreach (@modules){ print "$_: "; eval "use $_;"; print (eval "\$${_}::VERSION" || 'not available'); print "\n"; } print "\n";

tenketu
質問者

お礼

神です。 おかげさまでようやくこの問題から解放されました。 おっしゃる通り、DBD::mysqlモジュールを入れると動きました。 それからインストールされているか確認できる上のプログラムについてはかなり便利で、これからことあるごとに使わさせてもらおうと思います。 ほんとうにどうもありがとうございました。 ちなみに上のプログラムでは DBD::MySQL となっていますが、これでやるとインストールできていたとしても「not available」とでます。 DBD::mysql とやると、うまくいきました。

その他の回答 (1)

  • atom_seed
  • ベストアンサー率48% (25/52)
回答No.1

Localhostを、localhostに書き換えると動くなんてことはないですか? 自分の場合はいつも、host=localhost のように指定してますけど。

tenketu
質問者

お礼

回答ありがとうございます。 Localhostを、localhostに書き換えてみてもダメでした・・・。 (host=localhostにかえてもダメでした)

関連するQ&A