Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时检查sqlite中的数据库已锁定错误_Sqlite - Fatal编程技术网

何时检查sqlite中的数据库已锁定错误

何时检查sqlite中的数据库已锁定错误,sqlite,Sqlite,在运行web应用程序的linux服务器上,我们还有一个使用 sqlite(它是用c编写的) 为了执行数据库操作,我们使用以下命令: sqlite3_prepare_v2 sqlite3_bind_text or sqlite3_bind_int sqlite3_step sqlite3_finalize 偶尔会出现并发情况,我会遇到以下错误: database is locked 所以我想:“当一个进程写入某个记录,并且 另一个正在尝试读取完全相同的记录。” 所以在每一步命令之后,在可能发生

在运行web应用程序的linux服务器上,我们还有一个使用 sqlite(它是用c编写的)

为了执行数据库操作,我们使用以下命令:

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日志,您可以选择一个作者和多个读者。使用其他日志记录方法,您可以有一个作者,也可以有多个读者,但不能同时有两个