Python アプリケーションに SQLite 3.7 を使用すると、ロック (OperationalError) が発生することに気付きました。ORM に SQLalchemy を使用しています。この問題は Windows で発生します。アプリケーションと同じマシンで DB を使用しています。
ubuntuでは問題なく動いているようです。何が問題なのだろうか?古いバージョンの sqlite には、この問題が修正されていましたか?
いくつかの考え:
- Windows NFS for SQLlite にはロックの問題がありますが、ローカル ファイル システムを使用しているため、この可能性は破棄されます。
- マシンで実行されているウイルス対策は、更新時にファイルを読み取るため、ロックを引き起こす可能性があります。データベースのロックが解除されることはありません(コマンドライン経由でDBにアクセスしている間、5分ほど待ちました)。これは、ハングしているプロセスがロックを保持していたのか、プロセスが強制終了されたのかを考えさせます。しかし、DBにアクセスしていた唯一のプロセス(pythonボトルサーバー)が実行されていたため、そうではなかったようです。単一プロセスの Apache で実行されています。