繁体   English   中英

删除文件后仍出现磁盘 I/O 错误

[英]Disk I/O errors even after removing the file

当我指定数据库位于/tmp/a时,在 SQLite 数据库上运行测试时出现各种错误。 错误包括SQLITE_IOERR_DELETE_NOENT (5898)SQLITE_READONLY_DBMOVED (1032) 即使在我删除文件/tmp/a后,这些错误仍然存在。 奇怪的是,如果我指定数据库位于/tmp/b ,那么一切都会按预期进行。 另外,值得注意的是, /tmp/a的错误发生在数据库初始化之后,这意味着数据库已经用各种表进行了初始化; 这意味着写作在一定程度上确实有效。 此外,两个文件的文件权限看起来相同:

$ ls -ahlv /tmp/a
-rw-r--r-- 1 rik users 24K Jan 15 18:00 /tmp/a

$ ls -ahlv /tmp/b
-rw-r--r-- 1 rik users 24K Jan 15 18:00 /tmp/b

也许这是 SSD 缓存的一些问题? 如果有新情况发生,我会密切关注它并更新这篇文章。

您的临时文件名可能不够随机,不会让另一个流氓进程与同一文件交互。 您可能希望使用一个或多个随机文件名来避免同一文件发生冲突。 或者,如果该文件确实是临时文件,您可能需要使用:memory:文件名,这意味着不在磁盘上写入任何内容并将完整的数据库保留在 memory 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM