我有一个这样的用例:
服务器使用SQLite作为一个美化的键值存储,基本上 - 非常简单的查询,只读,不写。
这似乎有效,因为服务器应用程序可以看到新数据。
但是,这样安全吗?
https://www.sqlite.org/howtocorrupt.html#unlink说明
取消链接或重命名打开的数据库文件会导致行为未定义且可能不合需要。
但由于WAL日志需要额外的文件,这似乎是在读写数据库的上下文中。
看起来SQLite确实采取了一些步骤来检测文件在其下面的变化 - 例如https://www.sqlite.org/fileio.html的第5.11节谈到当SQLite检测到文件在其下面被更改时使内存页面缓存无效
现在,我一直在谨慎并关闭/重新打开文件,但对于我的特定用例,如果我可以踩到它,那么维护的代码就会减少文件通过unlink + rename和委托给SQLite本身来检测和处理这种情况。