テーブルが存在するか確認する方法

perl,DBIでテーブルが存在するか確認する方法

# table_nameというテーブルが存在するかどうか
$sql = qq{ show tables like 'table_name'; };
$sth = $db->prepare ($sql);
$tbl = $sth->execute ();
$sth->finish;
$db->commit ();

if ($tbl != '0E0'){
    # テーブルが存在する場合の処理
}

テーブルが存在するかどうかをshow tableで取得

select文でないステートメントを実行した場合、executeは影響を受けたレコード数を返します。また、レコード数が0の場合は0E0、レコード数が不明の場合は-1を返します。 DBI/DBDについて

らしいので返り値が'0E0'の時、テーブルは存在しないという判定にしてやればOK

補足

MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.1.3 GRANT 構文

別所で指摘してもらったんですがSHOW TABLESは権限の問題があるみたいです

select * 
from information_schema.TABLES 
where TABLE_NAME = 'table' 
and TABLE_SCHEMA = 'database';