![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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初心者のため、どこが問題なのか検討がつきません。
ご助言いただきたく存じます。
よろしくお願いいたします!
No.1ベストアンサー
- 回答日時:
ひとさまのサーバ設定状況がどうなってるかは実際にさわっていないので想像するしかないんですが
まずは、コマンドライン(mysqlクライアント)でつながってテーブルまで見えるかどうかでしょうか?
Webでどうこうより、機能を切り分けて、DB側からアプローチして見ることです
このソースをざっと見る限りじゃ問題はなさそうに見えるので、権限だったり、ポートだったり、DB側の設定ミスだったりとかの環境問題でしょうか
No.2
- 回答日時:
そこに書かれている記述内容が、実際に設置されたtest.cgiからの完全なコピペであるなら(タイプミスがないなら)、1ヶ所気になる部分があります。
-------------------------------------------
my $dbh = DBI->connect("DBI:mysql:database, "userid", "password");
-------------------------------------------
databaseのうしろに「閉じのダブルクォート」が抜けてます。
ただ、私もそのダブルクォートを抜いて試してみましたが、肝心の、
--------------------------------------------
DBD::mysql::st execute failed: Table 'database.tablename' doesn't exist at test.cgi line 8.
--------------------------------------------
などというエラー行は見当たりませんでした。
その代わりに、ログには大量のエラー行が発生し、ブラウザには「Internal Server Error」が表示されるなど、エラーの出方は全然違いますが、もしそのダブルクォートが抜けているなら、明らかにエラーの一因にはなってますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fetchrow_arrayとfetchrow_hash...
-
グラフのX,Y座標を取得したい
-
ユーザー定義関数に#NAME?が返...
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
「デバイスは PRN を初期化でき...
-
文章の分割
-
VBでグローバル変数を宣言するには
-
Excel VBA 『Call』で呼び出す...
-
Perlソースコードをコンパイル...
-
エクセルVBAでシートモジュール...
-
Form間の値の渡し方
-
モジュールとは何ですか
-
[ASP]条件によってインクルード...
-
「Perl Command Line InterPret...
-
'Range'メソッドは失敗しました
-
ppmのリポジトリの場所
-
Excel VBAで、ユーザーフォー...
-
AIX6でファイルのタイムスタン...
-
Excel VBA 定義されたプロージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fetchrow_arrayとfetchrow_hash...
-
perlでdb(mysql)に接続
-
perlのdbi-connect処理のエラー
-
PerlソースでのSQLのエラーにつ...
-
MySQLのトランザクションについて
-
PerlでMySQLのテーブル一覧取得
-
ActivePerl を使用して MySQL に
-
テキストデータをpostgreSQLの...
-
CGIからデータベースにデータを...
-
データベースにアクセス出来ま...
-
CGI(perl)データベースを教えて...
-
DBIでメールアドレスにマッチさ...
-
Oracleのデータベースに接続で...
-
perlでのDBI接続
-
ファイルデータ内容を SQL条件...
-
データベースへのデータの受け渡し
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
おすすめ情報