使用sqlite3命令行时,sqlite错误数据库被锁定
发布时间:2020-12-12 18:57:57 所属栏目:百科 来源:网络整理
导读:我从bash使用sqlite3命令行. 我产生了多个进程,都试图插入到同一个sqlite数据库文件中. 我经常得到“数据库被锁定”. 根据我对文档的阅读(http://www.sqlite.org/cvstrac/wiki?p=DatabaseIsLocked),这应该永远不会发生:“SQLITE_LOCKED意味着争用的来源是内
我从bash使用sqlite3命令行.
我产生了多个进程,都试图插入到同一个sqlite数据库文件中. 我经常得到“数据库被锁定”. 根据我对文档的阅读(http://www.sqlite.org/cvstrac/wiki?p=DatabaseIsLocked),这应该永远不会发生:“SQLITE_LOCKED意味着争用的来源是内部的,来自接收SQLITE_LOCKED错误的同一数据库连接”. sqlite3命令行是单线程的,所以在这种情况下我会期望SQLITE_BUSY,但不是SQLITE_LOCKED. 码: doit() { sqlite3 /tmp/db "insert into foo(a,b,c) values(1,2,3); } doit &; doit &; doit & 我尝试添加PRAGMA busy_timeout = 2000;和PRAGMA locking_mode = EXCLUSIVE;对于它,但它没有帮助. sqlite3 -version 3.8.9 2015-04-08 12:16:33 8a8ffc862e96f57aa698f93de10dee28e69f6e09 解决方法SQLITE_BUSY的错误消息是“数据库被锁定”; SQLITE_LOCKED将是“数据库表被锁定”.以下适用于我(没有busy_timeout会导致错误): doit() { sqlite3 /tmp/db "pragma busy_timeout=20000; insert into foo(a,3);" } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |