SQLite: database is locked
SQLiteデータベースロックエラーの解決方法
概要
SQLiteデータベースが他のプロセスまたはトランザクションによってロックされている状態です。
エラーメッセージ
sqlite3.OperationalError: database is locked
原因
- 同時書き込み: 複数プロセスからの書き込み
- 長時間トランザクション: コミットされていない変更
- WALモード未使用: 読み書きの競合
- 接続クローズ忘れ: 接続が開いたまま
解決策
1. WALモードを有効化
| |
| |
2. タイムアウト設定
| |
3. 接続を確実にクローズ
| |
4. 書き込みは単一プロセスに限定
| |
よくある間違い
- WebアプリケーションでSQLiteを使用
- トランザクション内で長時間処理
この記事は役に立ちましたか?