«

»

Aug
09

Nervbolzen: WARNING: mysqlcheck has found corrupt tables

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. Beni sagt:

    Huhu,

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

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

    Gruß beni

Hinterlasse eine Antwort

Ihre E-Mail-Adresse wird nicht veröffentlicht.

Sie können diese HTML-Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

What is 3 + 2 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)