アプリ版:「スタンプのみでお礼する」機能のリリースについて

「windows7 64bit に ActivePerl をいれています」

以下のプログラムを書いて実行したところ、エラーメッセージがでてきました。


Software error:

DBD::MySQL initialisation failed: Can't locate object method "driver" via package "DBD::MySQL" at C:/usr/local/lib/DBI.pm line 808.

Perhaps the capitalisation of DBD 'MySQL' isn't right. at C:/Apache2.2/htdocs/00001/shinki_data_sakusei.pl line 33.


これはつまり、DBD::MySQL がないよ!という意味であると思うのですが、ppmを起動してDBDにあたるモジュールをインストールして再実行してもまだ同じエラーがでます。どうしてもwindows7上で作らなければならないので、困っています。どこか参考になるサイトはないでしょうか?

=========================================
use strict;
use warnings;

# エラーをブラウザに表示
use CGI::Carp qw(fatalsToBrowser);

use utf8;
binmode STDIN, ':encoding(UTF-8)';
binmode STDOUT, ':encoding(UTF-8)';
binmode STDERR, ':encoding(UTF-8)';
use Encode;
use DBI;


# プログラム開始

# ユーザ名とパスワード
my $user = 'root';
my $pass = 'root';

#データベースへ接続
my $db = DBI->connect('DBI:MySQL:localhost', $user, $pass,);
if ( ! $db ){
print "エラー: $db->err $db->errstr\n";
}

# 命令
my $sth = $db->prepare( "SELECT * FROM login" );

# 実行
$sth->execute;

# 出力
while( my @row = $sth->fetchrow_array ){
print "@row\n";
}

#データベースから切断
$db->disconnect;


__END__

A 回答 (2件)

これがプログラムの全てならば、



print "@row\n"; をする前に、

print "Content-type: text/plain\n\n";

がないというのがInternal Server Errorの原因をまず疑いたいところです。
Content-typeの設定を#プログラム開始 の直後 ~ #データベースへ接続 の手前 くらいに欲しいです。
    • good
    • 0
この回答へのお礼

はい、ご指摘のとおり、

print "Content-Type: text/html; charset=UTF-8\n\n";

を入れていなかったためのエラーでした。とても恥ずかしいです(T_T)

お礼日時:2013/06/13 16:35

ppmで DBD::mysql(DBD-mysql)はインストール済なんですね。


そうなのでしたら、おそらく

> my $db = DBI->connect('DBI:mysql:localhost', $user, $pass,);

のように、mysqlを小文字で指定していないのが原因でしょう。

Windowsではファイル名の大文字小文字は区別されませんが、
Perlとしてはモジュール名は大文字小文字が区別されます。

この回答への補足

# ユーザ名とパスワード
my $dbname = 'login_data';
my $dbhost = 'localhost';
my $user = 'root';
my $pass = 'root';

#データベースへ接続
my $db = DBI->connect( "DBI:mysql:database=$dbname;host=$dbhost", $user, $pass );

===================================================================

で実行してみましたが、今度はなにか、

Internal Server Error

でした(T_T) なんとかいろいろ頑張ってみます

補足日時:2013/06/12 15:38
    • good
    • 0
この回答へのお礼

ご指摘のとおり、小文字大文字の区別の問題でした。

ありがとうございました。 とっても恥ずかしいです。

お礼日時:2013/06/13 16:34

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