Ich habe eine (winzige) dynamische Website, die (ungefähr) ein Perl-CGI-Skript ist, das eine SQLite-Datenbank verwendet. Paket-DBI ist die Abstraktionsschicht, die in Perl verwendet wird.Disk-E/A-Fehler mit SQLite
Etwa eine Woche vor, begann ich diese Fehlermeldung zu sehen:
disk I/O error(10) at dbdimp.c line 271
Da dies eine gehostete Website mit Apache ist, kann ich nicht sehen, ob die Festplatte (fast) voll ist. Der Zugriff auf den Befehl "df" ist deaktiviert .... aber ich habe den (UNIX) Shell-Befehl "yes> blah" verwendet, um zu testen, ob der Datenträger noch neue Dateien erstellen kann. Meine Datenbank ist sehr klein - weniger als 50 Kilobyte.
Ich überprüft Datei-und Verzeichnisberechtigungen: Directory und alle Eltern sind a + r, a + x (alle + lesen/ausführbar). Das Verzeichnis, das meine SQLite-Datenbankdatei enthält, ist auch ein + w (all + write). Die Datenbankdatei selbst hat ein + w, ein + r (alles + lesen/schreiben).
Ich schrieb ein einfaches Perl-Programm zu testen, ich kann die fehlgeschlagene Select-Abfrage ausführen: Es läuft gut.
Ich führte Abfrage "VACUUM" auf der Datenbank. Ich habe meine Tests erneut versucht - keine Verbesserung.
Ich warf die SQLite-Datenbank auf Raw SQL (mit SQLite Shell-Befehl ".dump") und neu erstellt. Ich habe meine Tests erneut versucht - keine Verbesserung.
Irgendwelche Vorschläge? Ich bin so verwirrt ... Normalerweise kann die obige Liste die meisten Programmier-/Setup-Fehler auffangen.
Können Sie den Code posten, der ausgeführt wird, wenn der Fehler auftritt? –
Welche Version von SQLite verwenden Sie? Und wie groß ist Ihre Datenbank? Ist das nützlich - http://www.sqlite.org/cvstrac/tktview?tn=3094,3 –