SQlite3 锁定 Windows
我注意到在使用SQLite 3.7的Python应用程序时出现了锁定(OperationalError)的问题。我在使用SQLalchemy进行对象关系映射(ORM)。这个问题发生在Windows系统上,而我是在和应用程序同一台机器上使用数据库。
在Ubuntu上似乎一切正常。我在想这可能是什么问题?之前的某个旧版本的SQLite是否有这个问题,但后来修复了呢?
一些想法:
- Windows的NFS(网络文件系统)在使用SQLite时确实有锁定问题,但因为我使用的是本地文件系统,所以这个可能性可以排除。
- 机器上运行的杀毒软件会不会导致锁定,因为它会在文件更新时读取文件。数据库上的锁定从未释放(我等了大约5分钟,在通过命令行访问数据库时)。这让我想知道是否有某个挂起的进程在占用锁,或者进程被杀掉了。但似乎不是这种情况,因为唯一访问数据库的进程(Python的Bottle服务器)仍在运行。它是在单进程的Apache下运行的。
1 个回答
1
SQLite的锁定方式可以在这个链接找到详细说明:http://www.sqlite.org/lockingv3.html - 建议你去看看。在Windows系统上,你可以使用Sysinternal的进程监视器来查看谁在访问这个文件,这样就能找到问题的根源。