【发布时间】:2018-11-13 07:12:22
【问题描述】:
我有一个(小)动态网站,它(大致)是一个使用 SQLite 数据库的 Perl CGI 脚本。 Package DBI 是 Perl 中使用的抽象层。
大约一周前,我开始看到这个错误信息:
dbdimp.c 第 271 行的磁盘 I/O 错误 (10)
由于这是一个运行 Apache 的托管站点,我无法查看硬盘是否(几乎)已满。对命令“df”的访问被禁用....但我使用(UNIX)shell 命令“yes > blah”来测试磁盘仍然可以创建新文件。我的数据库非常小——不到 50 KB。
我检查了文件和目录权限:目录和所有父级都是 a+r,a+x(全部 + 读/可执行)。包含我的 SQLite 数据库文件的目录也是 a+w(全部 + 写入)。数据库文件本身有a+w,a+r(全部+读/写)。
我编写了一个简单的 Perl 程序来测试我可以运行失败的选择查询:它运行良好。
我在数据库上运行了查询“VACUUM”。我再次尝试了测试 - 没有任何改善。
我将 SQLite 数据库转储为原始 SQL(使用 SQLite shell 命令“.dump”)并重建。我再次尝试了测试 - 没有任何改善。
有什么建议吗?我很困惑...通常,上面的列表可以捕获大多数编程/设置错误。
【问题讨论】:
-
能贴出错误发生时执行的代码吗?
-
您运行的是哪个版本的 SQLite?你的数据库有多大?这有用吗 - sqlite.org/cvstrac/tktview?tn=3094,3