我在我的 RTOS 系统中使用 SQLite3。我已经设置了配置,以便它会为每个事务锁定。在我的系统上,我最终在驱动器上有一个文件
“SQLDB.db”
当有交易时,如果你足够快,通常可以看到一个锁文件。 “SQLDB.db.锁”。
让我抓狂的是,当我删除“SQLDB.db”时,我仍然可以从数据库中执行 SELECT,但我无法插入。这不是缓存问题,因为我可以在多个表上进行选择(在重新启动系统之前我没有对其进行任何操作)。
所以我的问题是,数据库文件是否被缓存?它保存在某个地方的RAM中吗?怎么可能查询这个幽灵数据库?
最佳答案
在 Unix 中,当您删除一个文件时,目录条目会立即被删除,但实际的文件数据只有在所有打开的文件句柄都已关闭后才会被删除。
显然,您的 RTOS 表现相同。
关于c++ - sqlite3数据库文件可以删除,仍然可以访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063878/