電子書籍の厳選無料作品が豊富!

【 windows7 64bit + MySQL5.5 + ActivePerl 5.16.3 】

コマンドプロンプトで直接、

c:\>ppm install DBI
No missing packages to install

というメッセージがでます、これは「もうインストールされてるよー」という意味だと思いますが、プログラムを実行しても、

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.

というエラーがでます。

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

# 初期設定部分
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 $dbname = 'login_data';
my $dbhost = 'localhost';
my $user = 'root';
my $pass = 'root';

#データベースへ接続
my $db = DBI->connect( "DBI:MySQL:dbname = $dbname;host = $dbhost", $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件)

エラーメッセージの


> Perhaps the capitalisation of DBD 'MySQL' isn't right. at C:/Apache2.2/htdocs/00001/shinki_data_sakusei.pl line 33.
は「たぶん DBD の 'MySQL' の大文字・小文字が間違ってるんじゃないかなぁ」と読めます。おそらく
> my $db = DBI->connect( "DBI:MySQL:dbname = $dbname;host = $dbhost", $user, $pass );
の MySQL が問題ではないかと。
    • good
    • 0
この回答へのお礼

ありがとうございます、小文字大文字でした。全くお恥ずかしいです。

============================
# 初期設定部分
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;


# プログラム開始
print "Content-Type: text/html; charset=UTF-8\n\n";

# ユーザ名とパスワード
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 );
# 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__

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

参考までに、パッケージがインストールされていない場合のエラーメッセージは以下のとおりとなります。



Can't locate hogehoge.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .)

今回はきちんとインストールされているため、#1の回答のようにエラーが返ります。
    • good
    • 0
この回答へのお礼

問題は、

my $db = DBI->connect( "DBI:mysql:database=$dbname;host=$dbhost", $user, $pass );

部分の mysql の小文字大文字部分でした。

すごく恥ずかしいです。

うまく、いきました。ありがとうございました。

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

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