Kapitel 8: MySQL-Tab ellentypen 489
8.1.3.1 Besch¨adigte MyISAM-Tabellen
Obwohl das MyISAM-Tabellenformat sehr zuverl¨assig ist (alle
¨
Anderungen an einer
Tabelle werden geschrieben, bevor das SQL-Statement zur¨uckkehrt), k¨onnen Sie dennoch
besch¨adigte Tabellen bekommen, wenn eines der folgenden Dinge passiert:
• Der mysqld-Prozess wird mitten in einem Schreibvorgang gekillt.
• Unerwartetes Herunterfahren des Computers (wenn der Computer beispielsweise
a/jointfilesconvert/293675/bgeschaltet wird).
• Ein Hardware-Fehler.
• Sie benutzen ein externes Programm (wie myisamchk) auf einer benutzten Tabelle.
• Ein Software-Bug im MySQL- oder MyISAM-Code.
Typische Symptome einer besch¨adigten Tabelle sind:
• Sie erhalten den Fehler Incorrect key file for table: ’...’. Try to repair it,
wenn Sie Daten aus der Tabelle ausw¨ahlen.
• Anfragen finden keine Zeilen in der Tabelle oder geben unvollst¨andige Daten zur¨uck.
Sie k¨onnen mit dem Befehl CHECK TABLE pr¨ufen, ob eine Tabelle in Ordnung ist. Siehe
Abschnitt 5.4.4 [CHECK TABLE], Seite 219.
Sie k¨onnen eine besch¨adigte Tabelle mit REPAIR TABLE reparieren. Siehe Abschnitt 5.4.5
[REPAIR TABLE], Seite 221. Wenn mysqld nicht l¨auft, k¨onnen Sie eine Tabelle auch mit
dem myisamchk-Befehl reparieren. myisamchk-Syntax.
Wenn Ihre Tabellen oft besch¨adigt werden, sollten Sie versuchen, den Grund daf¨ur her-
auszufinden! Siehe Abschnitt A.4.1 [Crashing], Seite 635.
In diesem Fall ist es am wichtigsten zu wissen, ob die Tabelle durch einen Absturz von
mysqld besch¨adigt wurde (das k¨onnen Sie leicht feststellen, wenn es eine aktuelle Zeile
restarted mysqld in der mysqld-Fehlerdatei gibt). Wenn das nicht der Fall ist, sollten
Sie versuchen, daraus einen Testfall zu machen. Siehe Abschnitt D.1.6 [Reproduceable test
case], Seite 699.
8.1.3.2 Client benutzt Tabelle oder hat sie nicht korrekt
geschlossen
Jede MyISAM-.MYI-Datei hat im Header einen Z¨ahler, der benutzt werden kann, um zu
pr¨ufen, ob die Tabelle korrekt geschlossen wurde.
Wenn Sie folgende Warnmeldung von CHECK TABLE oder myisamchk erhalten:
# client is using or hasn’t closed the table properly
heißt das, dass der Z¨ahler nicht mehr synchron ist. Das bedeutet nicht, dass die Tabelle
besch¨adigt ist, aber Sie sollten zumindest eine
¨
Uberpr¨ufung vornehmen, um sicherzustellen,
dass die Tabelle in Ordnung ist.
Der Z¨ahler funktioniert wie folgt:
• Wenn die Tabelle das erste Mal in MySQL aktualisiert wird, wird der Z¨ahler im Header
der Index-Dateien heraufgez¨ahlt.
• Der Z¨ahler wird w¨ahrend weiterer Aktualisierungen nicht ver¨andert.
Comentarios a estos manuales