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.

Dieser Beitrag wurde unter Programmierung, Sonstiges veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf Nervbolzen: WARNING: mysqlcheck has found corrupt tables

  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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>