wie man beschädigte, nicht sauber geschlossene und aktualisierte Tabellen in MySQL repariert


7

Wenn ich den MySQL-Server in Debian neu starte, werden immer die folgenden Meldungen angezeigt. Wie kann man die Nachrichten verschwinden lassen oder das Problem / die beschädigten Tabellen beheben?

debian:~# /etc/init.d/mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..

Das Linux /var/log/syslogzeigt

Jul 18 12:27:57 localhost mysqld: 140718 12:27:57 [Note] /usr/sbin/mysqld: Normal shutdown
Jul 18 12:27:57 localhost mysqld:
Jul 18 12:27:57 localhost mysqld: 140718 12:27:57 [Note] Event Scheduler: Purging the queue. 0 events
Jul 18 12:27:57 localhost mysqld: 140718 12:27:57  InnoDB: Starting shutdown...
Jul 18 12:27:58 localhost mysqld: 140718 12:27:58  InnoDB: Shutdown completed; log sequence number 0 44233
Jul 18 12:27:58 localhost mysqld: 140718 12:27:58 [Note] /usr/sbin/mysqld: Shutdown complete
Jul 18 12:27:58 localhost mysqld:
Jul 18 12:27:58 localhost mysqld_safe: mysqld from pid file /var/run/mysqld/mysqld.pid ended
Jul 18 12:28:00 localhost mysqld_safe: Starting mysqld daemon with databases from /mnt/user/mysql
Jul 18 12:28:00 localhost mysqld: 140718 12:28:00 [Note] Plugin 'FEDERATED' is disabled.
Jul 18 12:28:00 localhost mysqld: 140718 12:28:00  InnoDB: Started; log sequence number 0 44233
Jul 18 12:28:00 localhost mysqld: 140718 12:28:00 [Note] Event Scheduler: Loaded 0 events
Jul 18 12:28:00 localhost mysqld: 140718 12:28:00 [Note] /usr/sbin/mysqld: ready for connections.
Jul 18 12:28:00 localhost mysqld: Version: '5.1.49-3~bpo50+1'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Debian)
Jul 18 12:28:01 localhost /etc/mysql/debian-start[11601]: Upgrading MySQL tables if necessary.
Jul 18 12:28:01 localhost /etc/mysql/debian-start[11605]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Jul 18 12:28:01 localhost /etc/mysql/debian-start[11605]: Looking for 'mysql' as: /usr/bin/mysql
Jul 18 12:28:01 localhost /etc/mysql/debian-start[11605]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Jul 18 12:28:01 localhost /etc/mysql/debian-start[11605]: This installation of MySQL is already upgraded to 5.1.49, use --force if you still need to run mysql_upgrade
Jul 18 12:28:01 localhost /etc/mysql/debian-start[11611]: Checking for insecure root accounts.
Jul 18 12:28:01 localhost /etc/mysql/debian-start[11615]: Triggering myisam-recover for all MyISAM tables

Antworten:


11

Folgen Sie nicht der ersten Antwort, es ist ein sehr schlechtes Problem.

Wenn Sie die Zeile richtig lesen, werden Sie feststellen, dass KEIN Problem vorliegt, da die Tabelle nicht beschädigt ist oder etwas anderes gefunden werden kann

"Auf beschädigte, nicht sauber geschlossene und aktualisierungsbedürftige Tabellen prüfen", damit alles in Ordnung ist.


-1

Paar Optionen, die für mich funktioniert. 1) Finden Sie alle MySql-Prozesse, die auf Ihrem Debian ausgeführt werden:

ps -A | grep mysql

Und wenn etwas läuft, töte es:

kill -9 <ps_number which is second column number>

2) Eine andere Möglichkeit besteht darin, MySQL mit dem lokalen Host und der typischen Portnummer zu starten

sudo mysql -h 127.0.0.1 -P 3306 -u root -p <database>

https://stackoverflow.com/a/11658142/2523431

3) Der wildeste; Deinstallieren Sie MySQL und installieren Sie es neu (die Lösung, die in einem anderen Beitrag gefunden wurde, kann sich jedoch im Moment nicht an den Link erinnern, um eine Gutschrift zu erteilen): Mit dem Befehl:

sudo apt-get remove --purge mysql\*

Sie können alles löschen, was mit Paketen namens mysql zusammenhängt. Diese Befehle sind nur für Debian / Debian-basierte Linux-Distributionen gültig (z. B. Ubuntu). Sie können alle installierten MySQL-Pakete auflisten mit:

sudo dpkg -l | grep -i mysql

Für mehr Bereinigung für den Paket-Cache können Sie:

sudo apt-get clean

Erinnere dich an:

sudo updatedb

Andernfalls zeigt der Befehl "Suchen" alte Daten an. Verwenden Sie den folgenden Befehl, um MySQL erneut zu installieren:

sudo apt-get install libmysqlclient-dev mysql-client

Dadurch werden der MySQL-Client, libmysql und seine Header-Dateien installiert. Führen Sie Folgendes aus, um den Server zu installieren:

sudo apt-get install mysql-server

Es gibt andere Optionen, die von anderen empfohlen werden, wie das Überschreiben der Konfigurationsdatei, aber in meinem Fall (ich verwende MySQL unter Kali Linux, das auf Debian basiert) hat das nicht geholfen.

Übrigens vergessen Sie nicht, das System mit dem Befehl zu schließen:

shutdown -h now

es sollte Sie für weitere Unannehmlichkeiten in der Zukunft verhindern.


Nennen Sie niemals "kill -9 " als ersten Versuch. Versuchen Sie es "normal" mit einem typischen Kill thePID zu töten. Dann und nur dann, wenn nichts funktioniert und der Prozess sich weigert zu schließen, verwenden Sie kill -9. Die Verwendung von kill -9 verhindert, dass der Prozess jemals sauber geschlossen wird. Wenn Sie versuchen, ein Problem zu lösen, werden Sie wahrscheinlich neue erstellen (beschädigte Daten ...). Weitere Informationen finden Sie unter unix.stackexchange.com/questions/8916/… .
Baptiste Mathus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.