症状:
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";
神です。
おかげさまでようやくこの問題から解放されました。
おっしゃる通り、DBD::mysqlモジュールを入れると動きました。
それからインストールされているか確認できる上のプログラムについてはかなり便利で、これからことあるごとに使わさせてもらおうと思います。
ほんとうにどうもありがとうございました。
ちなみに上のプログラムでは
DBD::MySQL
となっていますが、これでやるとインストールできていたとしても「not available」とでます。
DBD::mysql
とやると、うまくいきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- オープンソース AWSドメイン名でApacheテスト・ページを表示させる方法を教えて下さい。 1 2023/04/26 15:59
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- その他(ソフトウェア) Microsoft Store Guitar Pro購入後の質問 1 2022/08/11 17:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pythonでターミナルに文字を出...
-
パイソンのクラスについて
-
int(input("○○"))の使い方
-
小数点付きの余分な桁を消すには
-
コーディングについて
-
PythonでUTF8の文字列をリスト...
-
$(ドル)の記号を表示したいの...
-
チェックボックスのCGIへの値の...
-
favicon.ico
-
I2C接続のLCDディスプレイを使う
-
Perlの例文でif($a==1&&$b==5&&...
-
Adafruit LIS3DH 3軸加速度セン...
-
perl言語について
-
m//gとm//gcの違い
-
16進の10進変換について
-
CLispのloop内の挙動について
-
Application.ScreenUpdating = ...
-
パイソンのクラスについて
-
どちのほうがすきですか?
-
パイソンのクラスのブログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
16進の10進変換について
-
Pythonでターミナルに文字を出...
-
シェルスクリプトで、空白(ス...
-
【至急!!!】python言語で本を見...
-
pythonで演算子を変数に代入す...
-
c言語 16進数の2進数への変換
-
パイソンのクラスについて
-
I2C接続のLCDディスプレイを使う
-
関数「exists」と「defined」の...
-
pythonの*
-
変数の中は文字列か数値か調べ...
-
数値かどうかの判定方法
-
python print文のエラー
-
int(input("○○"))の使い方
-
Perlの例文でif($a==1&&$b==5&&...
-
awkの正規表現での最左最短マッ...
-
Use of uninitialized value ---
-
CGIでimgタグでalignを使うとエ...
-
swift 文字コードから文字に変...
-
javaのパッケージ構成で各パッ...
おすすめ情報