perlでデータベースを使う時に誰もが必ず使うDBI。その接続時に使うconnectメソッドの第4引数に設定しているオプションがサービスによりまちまちなんだけど、だれか鉄板設定を教えてください。

僕が使うのが、

my $dbh = DBI->connect($dsn, $user, $password, {
    AutoCommit => 1,
    PrintError => 0,
    RaiseError => 1,
    ShowErrorStatement => 1,
    AutoInactiveDestroy => 1,
});

これ。

加えて、mysqlであれば

mysql_enable_utf8 => 1
mysql_auto_reconnect => 0,

SQLiteだと

sqlite_unicode => 1
sqlite_use_immediate_transaction => 1

を追加しています。

自分が理解している範囲で軽く説明

AutoCommit => 1

トランザクションに関する設定。DBIのデフォルトが有効です

PrintError => 0

クエリ実行時などにエラーが発生すると、warnを使って出力するオプション。DBIのデフォルトは有効ですが、このあとのRaiseErrorを使うのでここでは無効

RaiseError => 1

クエリ実行時などにエラーが発生した際に、例外を投げます。DBIのデフォルトは無効で、エラーがないかどうかを自分で各メソッドの戻り値、errやerrstrを使って処理する必要があります

ShowErrorStatement => 1

RaiseErrorやPrintErrorのエラーメッセージに、エラーの起きたクエリ・ステートメントを追加してくれます

AutoInactiveDestroy => 1

DBI >= 1.6.14 でサポート。forkした際に安全に$dbhを破棄してくれる。詳しくはここ

他にも鉄板設定あったら教えて!

このブログ記事について

このページは、Masahiro Naganoが2012年11月27日 11:22に書いたブログ記事です。

ひとつ前のブログ記事は「僕らがmemcachedのキャッシュキーにsha1やmd5のhash値を使うを避ける理由」です。

次のブログ記事は「Perl Advent Calendar Japan 2012 Hacker Track に Plack::Middleware::AxsLog の記事を書いたよ 」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja