:: DEVELOPER ZONE
myisamchk wird wie folgt aufgerufen:
shell> myisamchk [optionen] tabelle
optionen legt fest, was myisamchk tun soll. Die Optionen sind
unten beschrieben. (Sie erhalten eine Liste der Optionen, wenn Sie
myisamchk --help eingeben.) Ohne Optionen aufgerufen prüft
myisamchk einfach nur Ihre Tabelle. Um mehr Informationen zu
erhalten oder myisamchk anzuweisen, korrigierende Aktionen
durchzuführen, geben Sie Optionen wie unten und in den folgenden
Abschnitten beschrieben an.
tabelle ist die Datenbanktabelle, die Sie prüfen oder reparieren
wollen. Wenn Sie myisamchk anderswo als im Datenbank-Verzeichnis
ausführen, müssen Sie den Pfad zur Datei angeben, denn myisamchk
weiß nicht, wo Ihre Datenbank liegt. In der Tat kümmert sich
myisamchk nicht darum, ob die Dateien, die es bearbeiten soll, in
einem Datenbank-Verzeichnis liegen oder nicht; sie können diese Dateien
daher an eine andere Stelle kopieren und die Wiederherstellungsoperationen
dort durchführen.
Sie können in der myisamchk-Befehlszeile mehrere Tabellen angeben,
wenn Sie wollen. Sie können auch einen Namen als Indexdateinamen angeben
(mit dem Suffix .MYI), was Ihnen gestattet, alle Tabellen in einem
Verzeichnis anzugeben, indem Sie das Muster *.MYI benutzen. Wenn Sie
zum Beispiel in einem Datenbank-Verzeichnis sind, können Sie alle Tabellen
im Verzeichnis wie folgt prüfen:
shell> myisamchk *.MYI
Wenn Sie nicht im Datenbank-Verzeichnis sind, können Sie alle dortigen Tabellen prüfen, indem Sie den Pfad zum Verzeichnis angeben:
shell> myisamchk /pfad/zum/datenbank_verzeichnis/*.MYI
Sie können sogar alle Tabellen in allen Datenbanken prüfen, indem Sie einen Platzhalter im Pfad zum MySQL-Daten-Verzeichnis angeben:
shell> myisamchk /pfad/zum/datadir/*/*.MYI
Um schnell alle Tabellen zu prüfen, wird folgender Befehl empfohlen:
myisamchk --silent --fast /pfad/zum/datadir/*/*.MYI isamchk --silent /pfad/zum/datadir/*/*.ISM
Wenn Sie alle Tabellen prüfen und alle Tabellen reparieren wollen, die beschädigt sind, können Sie folgende Kommandozeile eingeben:
myisamchk --silent --force --fast --update-state -O key_buffer=64M -O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M /pfad/zum/datadir/*/*.MYI isamchk --silent --force -O key_buffer=64M -O sort_buffer=64M -O read_buffer=1M -O write_buffer=1M /pfad/zum/datadir/*/*.ISM
Hierbei wird angenommen, dass Sie mehr als 64 MB Arbeitsspeicher frei haben.
Wenn Sie einen Fehler wie den folgenden erhalten:
myisamchk: warning: 1 clients is using oder hasn't closed the table properly
Bedeutet das, dass Sie versuchen, eine Tabelle zu überprüfen, die durch ein
anderes Programm aktualisiert wurde (wie dem mysqld-Server), das die
Datei noch nicht geschlossen hat oder das abgestürzt ist, ohne die Datei
ordnungsgemäß zu schließen.
Wenn mysqld läuft, müssen Sie ein Sync/Schließen aller Tabellen mit
FLUSH TABLES erzwingen und sicherstellen, dass niemand die Tabellen
benutzt, während Sie myisamchk laufen lassen. In MySQL-Version 3.23
ist die einfachste Möglichkeit, dieses Problem zu vermeiden, die Benutzung
von CHECK TABLE anstelle von myisamchk.
© 1995-2005 MySQL AB. All rights reserved.
