Sqlite3数据库文件可以删除,仍然可以访问

时间:2018-04-27 13:51:57

标签: c++ c sqlite

我在我的RTOS系统中使用SQLite3。我已经设置了配置,以便锁定每个事务。在我的系统上,我最终在驱动器上有一个文件

“SQLDB.db”

当存在交易时,如果足够快,通常可以看到锁定文件。 “SQLDB.db.lock”。

让我疯狂的是,当我删除“SQLDB.db”时,我仍然能够从数据库中执行SELECT,但是我无法插入。这不是缓存问题,因为我可以选择多个表(我在重新启动系统之前没有进行任何操作)。

所以我的问题是,DB文件是否被缓存?它被保存在某个地方的RAM中吗?如何查询这个ghost数据库?

1 个答案:

答案 0 :(得分:0)

在Unix中,当您删除文件时,会立即删除目录条目,但只有在所有打开的文件句柄都已关闭时才会删除实际的文件数据。

显然,您的RTOS行为相同。