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を破棄してくれる。詳しくはここ
他にも鉄板設定あったら教えて!