Ralf Hüsing

August 9, 2007

Nervbolzen: WARNING: mysqlcheck has found corrupt tables

Abgelegt unter: Programmierung, Sonstiges — ralf @ 11:59 pm

Nach dem Upgrade von Debian Sarge auf Etch und einem damit verbundenem MySQL Update von 4.x auf 5.x nervt mysqlcheck mit folgendem rum:

*datenbank*.*tabelle*
error    : Table upgrade required. Please do "REPAIR TABLE `*tabelle*`" to fix it!

Bis zum Ende lesen - es gibt eine Super einfache Kösung statt dieses Pipeline-SQL-Foo gefrickels.

Da jeder der mehr als eine Datenbank/Tabelle laufen hat sicherlich keine Lust hat das “fix it” manuell durchzuführen hier ein paar shell einzeiler:

# Temporäres Verzeichniss und syslog wegsichern
mkdir ~/mysql-repair/
cp /var/log/syslog ~/mysql-repair/
cd ~/mysql-reqair

# Fehlerhafte Datenbanken/Tabellen - Repair SQL Statement ermitteln
egrep  'debian-start.+: [^-: ]+$'  syslog | perl -nle 'print "USE `$1`; REPAIR TABLE `$2`;"  if /([^\s]+)\.([^\s]+)$/' > repair.sql

# Manuell Prüfen
less repair.sql

# Und Reparieren
mysql -u root -p < repair.sql > repair.log

# MySQL neustarten
/etc/init.d/mysql restart

# Prüfen mysqlcheck immer noch was zu meckern hat (hoffentlich nicht!)
tail -n50 /var/log/syslog

# Und aufräumen
rm -rf ~/mysql-repair

Ich wette das “mysqlcheck” obiges Feature direkt mitliefert, aber ich hab natürlich nicht nachgeschaut …

Und ja, nach dem raussuchen des Links zu mysqlcheck steht etwas von einem repair Parameter.

1 Kommentar »

  1. Huhu,

    Danke für deinen Blogpost auf #1 in Google!

    Mit
    mysqlcheck -r –all-databases
    wurde meine Datenbank wieder repariert, juchuuu :-)

    Gruß beni

    Kommentar von Beni — September 21, 2008 @ 8:19 pm

RSS-Feed für Kommentare zu diesem Artikel. TrackBack-URL

Einen Kommentar hinterlassen

Powered by WordPress ( WordPress Deutschland )