我打开 sqlite 数据库文件sqlite3_open
并使用sqlite3_exec
.
该文件是一个全局日志文件,许多用户正在写入它。
现在我想知道,如果具有两个不同程序实例的两个不同用户尝试同时插入数据会发生什么......第二个用户的打开失败了吗?还是插入?
在这种情况下会发生什么?
如果这种情况不起作用,有没有办法解决这个问题?没有服务器端数据库?
大多数情况下是的。它使用文件锁定,但在某些系统上已损坏,请参阅http://www.sqlite.org/faq.html#q5
简而言之,锁是在您开始事务时创建的,并在之后立即释放。锁定时,其他实例既不能读取也不能写入数据库(在“大”数据库中,它们仍然可以读取)。但是,您可以以独占模式连接 sqlite 。当您要写入被另一个进程锁定的 db 时,执行会暂停指定的超时时间,默认为 5 秒。如果锁被释放,它会继续写入,否则它会引发错误。