PerlでMySQLのテーブル一覧取得
PerlでMySQLのデータベース内のテーブル一覧を取得することはできますか?
自分で以下の様なサブルーチンを作りましたが、返り値に何も入っていませんでした。
コマンドラインでもshow tables;で確認したのでテーブルは確実に存在します。
接続も
showでfetchrow_arrayなどは使えないのでしょうか?
またselect文でテーブル一覧を取得する方法がありましょうか?
Error: failed to connect to DB.とは出てこないので、接続も成功しています。
sub mysql_tablesGet{
my @data=@_;
my $db_id = $data[0];
my $db_password = $data[1];
my $dbh = DBI->connect("dbi:mysql:dbname=".$ftp_id.";host=$mysql_host", $db_id,$db_password)
or die "$!\n Error: failed to connect to DB.\n";
my $sth = $dbh->prepare("show tables;");
$sth->execute;
my @response;
my $i=0;
while(my @var = $sth->fetchrow_array){
my ($table_name) = $var[0];
$response[$i] = $table_name;
$i++;
}
$dbh->disconnect;
return @response;
}
MySQLのログはこんなのが出ています。
130406 17:11:44 70 Connect test2@192.168.11.22 on test2
70 Query set autocommit=1
特にエラーは出ていないので、show tables;は成功していると思います。
お礼
勘違いに気がつきませんでした。 コマンドで消せました。 phpMyAdminでcheckして削除した場合、viewが削除できませんでした。 自動的に判定して削除してくれないのですな。