我有一个(很小的)动态网站,它(大致)是一个使用 SQLite 数据库的 Perl CGI 脚本。 DBI 包是 Perl 中使用的抽象层。
大约一周前,我开始看到此错误消息:
disk I/O error(10) at dbdimp.c line 271
由于这是一个运行 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”)并重建。我再次尝试测试——没有任何改善。
有什么建议么?我很困惑......通常,上面的列表可以捕获大多数编程/设置错误。
造成这种情况的另一个原因是:
- 数据库文件可写
- 数据库日志文件(以-journal) is not可写
当数据库文件不可写时,您会收到“只读数据库”错误。当它可写但日志文件不可写时,您会收到“I/O 错误”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)