我有一個(很小)的動態網站,它大致上是一個使用SQLite數據庫的Perl CGI腳本。 Package DBI是Perl中使用的抽象層。SQLite的磁盤I/O錯誤
大約一週前,我開始看到此錯誤消息:
disk I/O error(10) at dbdimp.c line 271
由於這是運行Apache託管的網站,我不能看到,如果硬盤是(幾乎)滿。訪問命令「df」被禁用....但我使用(UNIX)shell命令「yes> blah」來測試磁盤是否仍然可以創建新文件。我的數據庫非常小 - 不到50千字節。
我檢查了文件和目錄權限:目錄和所有父母都是+ r,a + x(all + read/executable)。包含我的SQLite數據庫文件的目錄也是+ w(all + write)。數據庫文件本身具有+ w,a + r(all +讀/寫)。
我寫了一個簡單的Perl程序來測試我可以運行失敗的選擇查詢:它運行良好。
我在數據庫上運行查詢「VACUUM」。我再次嘗試了我的測試 - 沒有任何改進。
我將SQLite數據庫轉儲到原始SQL(使用SQLite shell命令「.dump」)並重建。我再次嘗試了我的測試 - 沒有任何改進。
有什麼建議嗎?我很困惑...通常,上面的列表可以捕捉大多數編程/設置錯誤。
你可以發佈錯誤發生時執行的代碼嗎? – 2012-04-03 13:07:40
你正在運行哪個版本的SQLite?你的數據庫有多大?這是否有用 - http://www.sqlite.org/cvstrac/tktview?tn=3094,3 – 2012-04-03 13:42:58