Bei einem Umzug mehrerer MySQL Datenbanken auf einen neuen Server, gab MySQL beim Starten folgende Fehlermeldungen aus:
ERROR 1577 (HY000) at line 1: Cannot proceed because system tables used by Event Scheduler were found damaged at server start
ERROR 1547 (HY000) at line 1: Column count of mysql.proc is wrong. Expected 20, found 16. The table is probably corrupted
Bei einem Wechsel auf einen neuen Linux-Server, mit einem anderen Linux-Betriebssystem, ist es sehr gut möglich, dass auf dem neuen System auch eine andere MySQL-Version läuft, so war es auch hier der Fall. Es ist wichtig, dass dann ein Upgrade der Datenbanken durchgeführt wird, um solche Fehler zu vermeiden . In unserem Fall war ein normales Upgrade nicht mehr möglich, die Datenbanken wurden schon, wenn auch nur für kurze Zeit, produktiv genutzt. MySQL bietet die Möglichkeit ein –force Upgrade durchzuführen, dies konnte in unserem Fall die Probleme der Datenbanken erfolgreich beseitigen und Mysql läuft nun Fehlerfrei. Anzuwenden ist es wie folgt:
- Es wird ein Datenbankbenutzer benötigt, der die Rechte für diese Aktion inne hat, in den meisten Fällen wird dies der root Benutzer von MySQL sein (hiervon gehe ich im Beispiel aus). Es kann aber auch sein, dass statt root ein Benutzer admin,… existiert, Hosting Provider machen so etwas gerne.
- Verbindet euch nun mit dem Linux System, z.B. per SSH. Wenn ihr euch mit dem Server per eingeschränktem Useraccount verbunden habt, so wechselt nun mit „su“ zu root. Als nächstes führt ihr folgendes Kommando aus:
-
mysql_upgrade -u root -p --verbose --force
-
- mysql_upgrade führt eigentlich mysqlcheck mit den Parametern –all-databases –check-upgrade –auto-repair aus. So wird das Upgrade also auf alle Datenbanken und alle Tabellen angewandt.
- Waren die Eingaben korrekt, und die Reparatur erfolgreich, so muss der Server nur noch einmal gestoppt und wieder gestartet werden. Unter Debian nutzt man folgende Befehle:
-
service mysql stop
-
service mysql start
-
- Die Fehlermeldungen sollten nun Vergangenheit sein. Generell wird empfohlen, bei jedem Upgrade von Mysql, auch ein Upgrade der Datenbanken durchzuführen.