Als ich gestern phpMyAdmin auf einem von mir betreuten Web-Server aufrief, erhielt ich folgende Fehlermeldung präsentiert:
#145 - Table './wsu/smt_stats' is marked as crashed and should be repaired
Hossa! In meiner ganzen Karriere habe ich so etwas noch nie erlebt. Nun, was tun? phpMyAdmin verfügt in seiner Oberfläche unter tabelle > Operations > Table Maintenance diverse Möglichkeiten zur Fehlerbehebung:
- Check table
- Analyze table
- Repair table
- Optimize table
Leider waren diese Befehle im aktuellen Fall nicht zugänglich – anstelle der Liste erschien oben genannte Fehlermeldung.
Glücklicherweise kann man in der Tabellenübersicht einer Datenbank Tabellen mit der Checkbox markieren und aus dem Befehle-Drop-Down dann ‚Repair‘ auswählen. Leider brachte dies nichts, die Fehlermeldung erschien weiterhin. Das Problem schien schwerwiegender zu sein, als zuerst angenommen.
Deshalb ging es einerseits rüber zu Google, ums ich über die Möglichkeiten der Tabellenreparatur schlau zu machen, andererseits per SSH auf den Server selbst.
Auf Ways to repair MYSQL Databases fand ich Empfehlungen für solche Fälle, welche ich der Reihe nach ausprobierte.
mysqlcheck
hist-web:~# mysqlcheck -uroot -p wsu smt_stats Enter password: wsu.smt_stats error : Table './wsu/smt_stats' is marked as crashed and should be repaired
Oookey … der Nächste bitte!
myisamchk
Zuerst fährt man MySQL ordnungsgemäss herunter:
/etc/init.d/mysql stop
Dann kann man sich mit dem Brachial-Tool ans Werk machen:
hist-web:/var/lib/mysql/wsu# myisamchk smt_stats.MYI Checking MyISAM file: smt_stats.MYI Data records: 139144 Deleted blocks: 0 myisamchk: warning: Table is marked as crashed - check file-size myisamchk: error: Size of datafile is: 10473472 Should be: 10473480 - check record delete-chain - check key delete-chain - check index reference - check data record references index: 1 myisamchk: error: Found 139145 keys of 139144 - check record links myisamchk: error: Recordlink that points outside datafile at 10473420 MyISAM-table 'smt_stats.MYI' is corrupted Fix it using switch "-r" or "-o"
Ich tat, wie mir befohlen wurde:
hist-web:/var/lib/mysql/wsu# myisamchk -r smt_stats.MYI - recovering (with sort) MyISAM-table 'smt_stats.MYI' Data records: 139144 - Fixing index 1 Found block that points outside data file at 10473420
Zur Sicherheit überprüfte ich die Tabelle erneut:
hist-web:/var/lib/mysql/wsu# myisamchk smt_stats.MYI Checking MyISAM file: smt_stats.MYI Data records: 139144 Deleted blocks: 0 - check file-size - check record delete-chain - check key delete-chain - check index reference - check data record references index: 1 - check record links
Da alles wieder rosig aussah, konnte man MySQL wieder hochfahren:
/etc/init.d/mysql start
22 Kommentare Kommentare
Sehr hilfreich! Danke, Danke! :)
Bedank mich rechtherzlich, hat wunderbar funktioniert.
Danke für den Input, guter Thread. Hatte selbst auch das Problem, wollte aber bei einer produktiven Installation mysql nicht abwürgen. Deshalb habe ich es so gelöst:
In phpMyAdmin oder cmd:
REPAIR TABLE [table_name];
Bei mir hats so funktioniert.
Danke Danke. Hat mir gerade das Leben gerettet
sorry das ich das jetzt das dritte mal poste. So sind die Kommandos jetzt aber wirklich richtig:
Bei mir hat das so leider auch nicht funktioniert. System ubuntu 8.04 mit plesk (strato v-server).
myisamchk fand die tabelle nicht ? Muss man bei -r evtl den ganzen pfad zu der verfickten datei angeben ?
Habe es dann mit mysql gemacht:
mysql -pmeinpasswort -uadmin
dann
> USE psa;
> check table tablename;
> repair table tablename;
Dann war auch wieder alles gut.
Danke
Klaus
Tausend Dank für deine Anleitung. Sie hat mir gerade sehr geholfen. Ich dachte gerade meine Daten wären weg.
Vielen Dank hat super geklappt.
Sebastian
Hallo,
Bei mir funktionierte die Seite bereits wieder, nachdem ich über den PHPAdmin die Reparatur durchgeführt hatte.
Da ich allerdings nicht so firm im PHPAdmin bin, vielen Dank für die Hilfe hier, wie ich das Problem lösen konnte.
Danke! Das hat mir den A…. gerettet!
Hat super funktioniert, danke für die Mühe das niederzuschreiben.
Danke ! Kann mich klaus vom 17.10.2010 vollinhaltlich anschließen.
DANKE! *erleichtert seufz* Super Beitrag, hat mir die Haut gerettet!!
Wunderbar, hat genau so auch bei mir funktioniert :-) Hatte schon ein bisschen Angst, die Tabelle könnte dauerhaft kaputt sein. Merke: DELETE auf 4,5 von 8 Millionen Zeilen läuft leider nicht reibungslos.
Vielen Dank für die Erklärung.
[…] Diese Internetseite hat super weitergeholfen, vielen dank […]
Vielen Dank für die Ausführung.
Hatte heute morgen auch plötzlich zwei korrupierte Datenbanken und myisamchk hat auch bei mir geholfen.
Wow, vielen Dank für die Anleitung! Hat mir auch sehr geholfen und ich konnte meine DB ohne weiteres reparieren.
Danke, you made my day!
[…] think eMeidi – MySQL: Table is marked as crashed and should be repaired […]
danke :)
Danke!!
Perfekt, genau das hat geholfen. Danke!
Hi ich habe das Problem ständig mit der user Tabelle. Nach jedem Start von MySQL wieder der gleiche Fehler, weis vllt. jemand was die Ursache sein könnte?