perlとmysqlの接続について

このQ&Aのポイント
  • PerlとMySQLの接続について苦戦しているMacユーザーです。PerlとMySQLを接続するためのソースコードを書いているのですが、エラーメッセージが表示されて接続できません。
  • 現在、MacユーザーがPerlとMySQLの接続に苦戦しています。Perlのソースコードを使ってMySQLに接続しようとしているのですが、エラーメッセージが表示されます。
  • PerlとMySQLの接続についての質問です。MacユーザーがPerlのソースコードを書いてMySQLに接続しようとしているのですが、エラーメッセージが表示されて接続できません。どのように対処すれば接続できるのでしょうか?
回答を見る
  • ベストアンサー

perlとmysqlの接続について。 mac

いつもお世話になっております。 現在、perlとmysqlの接続について苦戦しています。 私の状況としては Mac osx 10.6.6 使用3ヶ月。 プログラムを独学で勉強し始めて2ヶ月弱。 習熟進度としては 「初めてのperl」ある程度わかる。2週は読んだ。 「すぐわかるオブジェクト指向Perl」1週読んだ。 なんとなくわかる。 という状況です。 昨日より、MySQL(GPL)をダウンロードして挑戦しています ネットに置いてあったソースコードで、 #!/usr/bin/perl use DBI; my $dbh = DBI->connect("DBI:mysql:futomi", "futomi", "password"); my $sth = $dbh->prepare("SELECT * FROM test"); $sth->execute; print "Content-Type: text/plain\n\n"; print "\n"; while(my @row = $sth->fetchrow_array) { print "$row[0]:$row[1]\n"; } $sth->finish(); $dbh->disconnect(); exit; という形でperlからmysqlをつなごうとしているのですが、 install_driver(mysql) failed: Can't locate loadable object for module DBD::mysql in @INC というエラーメッセージと Perhaps a module that DBD::mysql requires hasn't been fully installed というエラーメッセージが表示されます。 cpanからDBD::mysqlもダウンロードし、Makefile.PL・・・コンパイルでよろしいのでしょうか?も終わっており、DBD::mysqlとDBIも@INK上に設置していると思われるのですが、 一向に接続する事ができません。 どのように対処すれば接続する事ができるのでしょうか? ご説明いただければと思います。 また、足りない文章、ソース等がありましたらそれらもあげさせていただきますので、 なにとぞご協力くださいませ。 それでは失礼いたします。

  • Perl
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • m-h000
  • ベストアンサー率100% (1/1)
回答No.1

エラーの内容だとDBD::mysqlがインストールされていないように見えますが、コマンドラインから「perldoc -l DBD::mysql」や「perl -e 'use DBD::mysql'」を実行してもエラーがでない状況でしょうか?

関連するQ&A

  • perlでdb(mysql)に接続

    perlでdb(mysql)に接続し、取得したデータを 表示させるというようなことをしたいのですが、うまく いきません。 ファイル名test.cgi mysqlのバージョンは 5.0.45で 記述は以下です。 #!/usr/bin/perl use DBI; my $dbh = DBI->connect("DBI:mysql:database, "userid", "password"); my $sth = $dbh->prepare('SELECT * FROM tablename'); $sth->execute; print "Content-Type: text/plain\n\n"; print "\n"; while(my @row = $sth->fetchrow_array) { print "$row[0]:$row[1]\n"; } $sth->finish(); $dbh->disconnect(); exit; ブラウザで確認すると何も表示されず、ログとして 以下のエラーが確認できます。 DBD::mysql::st execute failed: Table 'database.tablename' doesn't exist at test.cgi line 8. DBD::mysql::st fetchrow_array failed: fetch() without execute() at test.cgi line 11. my $sth = $dbh->prepare('SELECT * FROM tablename'); で指定したテーブルは存在しておりますし、SQL文の記述も 問題ないと思われます。 また、ファイルのパーミッションは705(755でも同様の結果)です。 perl初心者のため、どこが問題なのか検討がつきません。 ご助言いただきたく存じます。 よろしくお願いいたします!

    • ベストアンサー
    • Perl
  • perlからMySQL5に接続できません

    WindowsでperlからMySQLに接続できません。 perlは以下のようなものです。 結果は「1」と表示されるので、MySQLへの接続ができていないのだと思います。 考えられる原因がわかる方、アドバイスをお願いします。 #!/Perl/bin/perl use DBI; print "Content-type: text/html\; charset=shift_jis\n\n"; print "1"; my($dbh, $sth); $dbh = DBI->connect("DBI:mysql:database=データベース名;host=127.0.0.1", "root", "rootのパスワード",{ RaiseError => 1, AutoCommit => 0 }); print "2"; $sth = $dbh->prepare("select * from テーブル名;"); 以下略 WindowsXP SP2 Apache2.2.4 ActivePerl5.8.8 MySQL5.0

    • ベストアンサー
    • MySQL
  • perlでmysqlに接続

    初歩的な質問で申し訳ありません。 perlでmysqlに接続できず困っています(OSはWindowsXPです)。 バージョンは下の通りです。 perl : ActivePerl-5.8.8.820-MSWin32-x86-274739 mysql : MySQL Server 5.0 DOSでppmを入力すると「perl package manager」というウィンドウが立ち上がり、「DBD-SQLite」と「DBI」をインストールすることができました。 サンプルコードは下の通りです。 #!C:/usr/local/Perl/bin/perl use DBI; $user = '*****'; $passwd = '*****'; $db = DBI->connect('DBI:mysql:bulletin_board:localhost', $user, $passwd); $sth = $db->prepare("SELECT * FROM data"); $sth->execute; $num_rows = $sth->rows; print "該当 $num_rows 件\n"; for ($i=0; $i<$num_rows; $i++) { @a = $sth->fetchrow_array; print "no=$a[0], title=$a[1] name=$a[2] \n"; } $sth->finish; $db->disconnect; DOSで実行すると C:\Program Files\War-ftpd\FTPRoot\usr\f-taka\cgi-bin>perl sqlTest.cgi install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: C:/usr/local/Perl/site/lib C:/usr/local/Perl/lib .) at (eval 4) line 3. Perhaps the DBD::mysql perl module hasn't been fully installed, or perhaps the capitalisation of 'mysql' isn't right. Available drivers: DBM, ExampleP, File, Gofer, Proxy, SQLite, Sponge. at sqlTest.cgi line 8 というエラーが出ました。原因は何なのでしょうか。 MySQL側で設定することはあるのでしょうか。 アドバイスお願いします。

    • ベストアンサー
    • Perl
  • PerlからOracleに接続

    ご存知の方おられましたら、ご教示お願い致します。 昨日より、Perlのプログラムを始め、Oracleに接続するものを作成しておりまが以下のエラーがでてきて困っております。 接続部分ソース--------------------------- #!C:\パス use DBI; $dbh = DBI->connect("dbd:Oracle:データベース名", "ユーザ","パスワード"); エラー----------------------------------- install_driver(Oracle) failed: Can't locate loadable object for module DBD::Orac le in @INC (@INC contains: C:/Program Files/Perl/lib C:/Program Files/Perl/site/ lib .) at (eval 1) line 3 Compilation failed in require at (eval 1) line 3. Perhaps a module that DBD::Oracle requires hasn't been fully installed at database.pl line 5 環境--------------- OS WindowsXP pro perl ActivePerl-5.8.6.811 DBI,DBDはPPMでインストールしました。 接続先 OS Windows2003 DB oracle9 後、 use DBI; @ary = DBI->available_drivers; foreach (@ary){ print $_,"\n"; } でDBI使用できるDBDドライバを出した結果、Oracleが表示されておりました。 どうか、ご存知の方お願い致します。

  • perl >> DBI >> DBD >> oracle8でエラー

    perlからDBI経由でoracleに接続したいのですが、 なぜか DBI->connectのところで失敗して下記のようなエラーが出ます。 `CONNECT ERROR ORA-1034: ORACLE not available oas userでtelnetで入り、直接perl scriptを起動すると問題なく動作するの ですが、なぜかOAS経由でブラウザーからCGIとしてcallすると 失敗するのです。 もう2日も悩んでます。 どなたか原因がわかりましたらご教授ください。 ---- 環境 --- perl 5.005_03 OAS 4.0.8.1 DBI 1.30 DBD-Oracle 1.12 OS solaris2.6 接続先DBは別のsolarisマシンに入ってる。 ----------------ソース----------------------------- #!/usr/local/bin/perl use DBI; $dsn = 'DBI:Oracle:orcl'; $user = 'testuser'; $password = 'testuserpass'; $dbh = DBI->connect($dsn, $user, $password) or die "接続できません"; my $sth = $dbh->prepare("select * from munec"); $sth->execute; while(@row = $sth->fetchrow_array) { print "@row\n"; } ---------------

  • mysql 最大値 取得 

    mysqlのデータベースから、列の最大値を取り出したいのですが、 以下のように書いているのですが、取得される値が1しか返ってこないです。 間違っているところはあるでしょうか? perlで書いています。 my $dbh = DBI->connect("DBI:mysql:host=${db_host};database=${db_name}", $db_user, $db_pass); my $sth = $dbh->prepare("SELECT MAX(列名) FROM テーブル名"); my $rv = $sth->execute(); print "$rv";

    • ベストアンサー
    • MySQL
  • Mysqlの接続について

    現在、以下のようなperlのスクリプトを作っているのですが、mysqlへの接続,切断は以下の場合、どちらにした方がいいのでしょうか? (1)の場合 use DBI; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth = $dbh->prepare("SELECT no,title,name,date,host From `table1` where no='1'"); $sth->execute; $sth->fetchrow_array; $sth->finish; $sth2 = $dbh->prepare("SELECT no,title,name,date,host From `table2` where no='1'"); $sth2->execute; $sth2->fetchrow_array; $sth2->finish; $dbh->disconnect; (2)の場合 use DBI; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth = $dbh->prepare("SELECT no,title,name,date,host From `table1` where no='1'"); $sth->execute; $sth->fetchrow_array; $sth->finish; $dbh->disconnect; $dsn="DBI:mysql:database=dbname:host=localhost"; $dbh=DBI->connect($dsn,'user','pass'); $sth2 = $dbh->prepare("SELECT no,title,name,date,host From `table2` where no='1'"); $sth2->execute; $sth2->fetchrow_array; $sth2->finish; $dbh->disconnect; (1)の場合と(2)の場合の違いは、(1)の場合、最初にデータベースに接続して、一番最後に切断する事で、(2)の場合、毎回データベースへの接続と切断を行う事が違います。 (2)の場合、毎回接続と切断を行うので、2回ほどではあまり変わらないかもしれないのですが、もし10回とか接続と切断を行うとかなり負荷が高くなるような気がするのですが、他のHPなどを拝見すると接続をしたら切断を行うように癖をつけるようにした方がいいと書かれていたりします。 どちらの方が正しいやり方というか、負荷がすくなく使えるのでしょうか?

    • ベストアンサー
    • Perl
  • perlからmysqlに接続できない

    #! c:/perl/bin/perl  use DBI; $user = 'root'; $passwd = 'パスワード'; $db = DBI->connect('DBI:mysql:db1:localhost', $user, $passwd); $sth = $db->prepare("INSERT INTO bunrui VALUES (1,'1st','memo')"); $sth->execute; $sth->finish; $db->disconnect; perlからmysql二接続するためDBIをインストールして、上のようなサンプルコードを実行してみたのですが Internal Server Error になってしまいます。どこかコードが違っているのでしょうか?

    • ベストアンサー
    • Perl
  • mysqlへの接続でつまづいてまーす

    Perlのプログラムでログイン画面を作ろうと思っています。 ブラウザのログインフィールドからデータをとり、mysqlに接続してDBを検索し、照合するデータを見つけたら、合致するかどうか判断させて、エラーもしくはHPへ入ってしまえよ!という感じです。 で、似たようなサンプルソースを見つけていじっているのですが、これが出来ないんですよね~。接続だけなら出来るのに・・・ とりあえずこの中にエラーがないか教えてほしいです(>_<) if($i_id eq "" || $i_pw eq ""){ print "ログイン情報を入力してプリーズ(´д`;)ノ"; }else{ $dbh = DBI->connect($dbn,$user,$pw); $dbh->do("SET NAMES sjis"); $rows = $dbh->selectrow_array("SELECT count(*) from list where id = $i_id"); if($rows == 0){ print "該当するデータはないっすね~(゜*゜)"; }else{ $sth = $dbh->prepare("SELECT * FROM list where id = $i_id"); $sth->execute(); print <<"html"; 検索結果一覧<br><br> <table border="1"> <tr bgcolor="#dddddd"> <td>学籍番号</td> <td>パスワード</td> </tr> html while (@row = $sth->fetchrow_array()){ print <<"html"; <tr> <td>$row[0]</td> <td>$row[1]</td> </tr> html } print "</table>\n"; } ※ちなみにこれは一部です・・・

  • MySQLのトランザクションについて

    初めて質問します。 今、PerlのDBIを使ってMySQLのトランザクション処理にチャレンジしています。 ところが、rollback処理がうまくできません。 具体的には、 table2 がある状態で下のプログラムを動かすと、 エラーの表示が出るのに、 table1 は作成されました。 何らかのエラーがあれば、どちらも作成されないようにしたいです。 ======================================================= my %sql; $sql{db_name} = "database"; $sql{host} = "localhost"; $sql{user_name} = "user_name"; $sql{password} = "password"; use DBI; my $dbh = DBI->connect('DBI:mysql:'.$sql{db_name}.':'.$sql{host}, $sql{user_name}, $sql{password} ,{RaiseError => 1, PrintError => 0, AutoCommit => 0 }) || &Err(); my $sth; my $re; eval { my $sql_string1 = "create table table1(`id` int);"; my $sql_string2 = "create table table2(`id` int);"; $sth = $dbh->prepare($sql_string1); $re = $sth->execute; $sth = $dbh->prepare($sql_string2); $re = $sth->execute; }; if ($@) { $tag="Err:".$@."\n"; $sth = $dbh->rollback; }else{ $sth = $dbh->commit; } $sth->finish; $dbh->disconnect; ======================================================= 検索して、いろいろいじっても解決しませんでした。 どうかよろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう