生 DBI ユーザーのための DBI Cookbook (4)
さてと、モバゲーオープンプラットフォームが先日やっと始まりました^^
みなさん是非遊んで下さいです。
d:id:ZIGOROu:20091125:1259163476 のさらに続編です。
ShowErrorStatement でエラー時に発行されていたクエリを表示する
#!/usr/bin/perl use Carp; use DBI; my $dbh; eval { $dbh = DBI->connect("dbi:mysql:db=test;host=localhost", "root", "", +{ RaiseError => 1, AutoCommit => 0, ShowErrorStatement => 1, PrintWarn => 0, PrintError => 0, }) or croak($DBI::errstr); $dbh->selectall_arrayref("SELECT id, name, town FROM hidek WHERE id = ? AND name = ?", undef, "over", "reaction") or croak($dbh->errstr); }; if ($@) { confess($@); }
ってやると、
DBD::mysql::db selectall_arrayref failed: Unknown column 'town' in 'field list' [for Statement "SELECT id, name, town FROM hidek WHERE id = ? AND name = ?"] at - line 14. at - line 17
こんな感じのエラーになります。PrintError => 0, PrintWarn => 0 とかになってないと STDERR にメッセージが出ちゃうのでそれは消しておきました。
ちなみに $dbh->{Statement}, $sth->{Statement} で直近のクエリ自体を取得する事が出来ます。