何时检查sqlite中的数据库已锁定错误
在运行web应用程序的linux服务器上,我们还有一个使用 sqlite(它是用c编写的) 为了执行数据库操作,我们使用以下命令:何时检查sqlite中的数据库已锁定错误,sqlite,Sqlite,在运行web应用程序的linux服务器上,我们还有一个使用 sqlite(它是用c编写的) 为了执行数据库操作,我们使用以下命令: sqlite3_prepare_v2 sqlite3_bind_text or sqlite3_bind_int sqlite3_step sqlite3_finalize 偶尔会出现并发情况,我会遇到以下错误: database is locked 所以我想:“当一个进程写入某个记录,并且 另一个正在尝试读取完全相同的记录。” 所以在每一步命令之后,在可能发生
sqlite3_prepare_v2
sqlite3_bind_text or sqlite3_bind_int
sqlite3_step
sqlite3_finalize
偶尔会出现并发情况,我会遇到以下错误:
database is locked
所以我想:“当一个进程写入某个记录,并且
另一个正在尝试读取完全相同的记录。”
所以在每一步命令之后,在可能发生碰撞的地方,我检查了这个错误。当它发生时,我等了几毫秒,然后重试
但仍然发生sqlite错误“数据库已锁定”
因此,我更改了每个步骤的命令和之后的代码行。不知何故,我认为这个“数据库已锁定”错误只能在使用step命令时发生
但错误不断出现
我现在的问题是:
我是否必须在任何sqlite3命令之后检查“error_code==5”(数据库已锁定)
请提前多谢如果您收到错误代码5(忙),您可以使用即时事务来限制此操作。如果能够立即开始事务,SQLite保证在提交之前不会收到忙错误 还要注意,SQLite没有行级锁定。整个数据库被锁定。使用WAL日志,您可以选择一个作者和多个读者。使用其他日志记录方法,您可以有一个作者,也可以有多个读者,但不能同时有两个