2012-01-24 4 views
0

PythonアプリケーションでSQLite 3.7を使用しているときにロック(OperationalError)に気づいています。 ORMのSQLalchemyを使用しています。この問題はWindowsで発生します。アプリケーションと同じマシンでDBを使用しています。SQlite3のロックウィンドウ

ubuntuでは正常に動作しているようです。何が問題なのだろうか?古いバージョンのsqliteでこの問題が修正されましたか?

いくつかの考え:

-ThereはSQLliteのWindows NFSの問題をロックしているが、私はこの可能性が破棄されたローカルファイルシステムを使用しておりますので。

  • マシン上で実行中のウイルス対策ソフトウェアは、更新時にファイルを読み込むため、ロックを引き起こすことができます。 データベースのロックが解除されることはありません(コマンドラインでDBにアクセスしている間、5分間待っています)。これは、掛かっているプロセスがロックを保持しているのか、プロセスが殺されたのかを考えさせます。しかし、DBにアクセスしていた唯一のプロセス(python bottle server)が動作していたため、そうではないようです。それはシングルプロセスApacheで実行されています。

答えて

1

SQLiteでロックが発生する方法は、http://www.sqlite.org/lockingv3.htmlに記載されています。 Windowsでは、Sysinternalのプロセスモニタを使用して、誰がファイルにアクセスしているのかを監視し、原因をゼロにすることができます。