0

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

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

いくつかの考え:

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

  • マシンで実行されているウイルス対策は、更新時にファイルを読み取るため、ロックを引き起こす可能性があります。データベースのロックが解除されることはありません(コマンドライン経由でDBにアクセスしている間、5分ほど待ちました)。これは、ハングしているプロセスがロックを保持していたのか、プロセスが強制終了されたのかを考えさせます。しかし、DBにアクセスしていた唯一のプロセス(pythonボトルサーバー)が実行されていたため、そうではなかったようです。単一プロセスの Apache で実行されています。
4

1 に答える 1

1

SQLiteでロックが発生する方法は、http: //www.sqlite.org/lockingv3.htmlに記載されています-読んでください。Windowsでは、SysinternalのProcess Monitorを使用して、ファイルにアクセスしているユーザーを監視できます。これにより、原因が特定されます。

于 2012-01-25T01:14:43.530 に答える