タグ

sqliteとbusy_timeoutに関するmogwaingのブックマーク (1)

  • pylori*style: ActiveRecordでSQLiteのbusy_timeoutをひきのばす

    ActiveRecordでSQLiteアダプタを使っているとき、ひとつのデータベースファイルに複数のプロセスやスレッドからアクセスしていると、 SQLite3::BusyException: database is locked というエラーが出ることがあります。SQLiteではアクセスを試みてエラーを返すまでにロックを待つ時間がデフォルトでは0らしく、ロック状態だった場合は即座にエラーが発生します。 SQLite ver.3の対話型プログラム sqlite3では、ロック時の待ち時間を設定する .timeout というコマンドがあります。 .timeout 1000 のようにして使います(単位はミリ秒)。これを使えばロックされている場合にエラーではなく、ロック解除まで待ち状態にさせることができます。 ActiveRecordから timeout 値をセットするには、やや強引ですがとりあ

  • 1