Die MySQL-Tabelle ist als abgestürzt markiert und die letzte (automatische?) Reparatur fehlgeschlagen

126

Ich habe diese Tabelle repariert. Der Server ist plötzlich hängen geblieben. Als ich zurückkam, waren alle Tabellen in Ordnung, aber diese zeigt "in Verwendung" an und wenn ich versuche, sie zu reparieren, wird sie nicht fortgesetzt.

FEHLER 144 - Die Tabelle './extas_d47727/xzclf_ads' ist als abgestürzt markiert und die letzte (automatische?) Reparatur fehlgeschlagen

Was kann ich tun, um es zu reparieren?

CryptoMiningPoolSetupYiimp
quelle
1
Ich habe gesehen, dass dies meistens passiert, wenn das zugrunde liegende Dateisystem keine freien Inodes mehr hat. Fragen Sie bei df -hi nach. Normalerweise füllt es etwas mit vielen kleinen Dateien, wie z. B. PHP-Sitzungsdateien, die nicht bereinigt werden.
Zrin

Antworten:

260

Wenn Ihr MySQL-Prozess ausgeführt wird, stoppen Sie ihn. Auf Debian:

sudo service mysql stop

Gehen Sie zu Ihrem Datenordner. Auf Debian:

cd /var/lib/mysql/$DATABASE_NAME

Versuchen Sie zu laufen:

myisamchk -r $TABLE_NAME

Wenn das nicht funktioniert, können Sie versuchen:

myisamchk -r -v -f $TABLE_NAME

Sie können Ihren MySQL-Server erneut starten. Auf Debian:

sudo service mysql start
Aleksandar Vucetic
quelle
3
Ich habe den obigen Befehl ausprobiert. Ich erhalte diesen Fehler. Es kann kein neues Tempfile erstellt werden: 'xzclf_ads.TMD'
CryptoMiningPoolSetupYiimp
2
Ist die Festplatte wirklich voll? Können Sie versuchen, "df -h" auszuführen? Höchstwahrscheinlich ist dies der Fall, und Sie sollten Speicherplatz freigeben ... Während der Tabellenreparatur wird Speicherplatz zum Schreiben in eine temporäre Tabelle verwendet. Wie Sie aus der Fehlermeldung sehen können, schreibt es in Ihren / tmp / Ordner
Aleksandar Vucetic
13
Ich musste navigieren /var/lib/mysql/<database>und rennen myisamchk -r -v -f ./<table name>.
Linus Oleander
5
Ich habe einen myisam_sort_buffer_size is too smallFehler, also funktionierte dieser Befehl für mich:myisamchk -r -v --sort_buffer_size=2G <table_name>
Dusan
1
Wow, ich dachte meine ganze Website wäre abgespritzt. So eine einfache Lösung. Sie sind mein Held!
Anthony
105

Versuchen Sie, die folgende Abfrage auszuführen:

repair table <table_name>;

Ich hatte das gleiche Problem und es löste mich das Problem.

CREcker
quelle
Dies war eine schnelle Lösung! Hatte eine "schlechte" Optionstabelle. Stellen Sie sicher, dass Sie zuerst die richtige Datenbank auswählen!
Jyllstuart
12

Wenn Sie beim Umzug nach / var / lib / mysql die Berechtigung verweigern, verwenden Sie die folgende Lösung

$ cd /var/lib/
$ sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME>
verrückt
quelle
4

Ich musste USE_FRM zur Reparaturanweisung hinzufügen, damit es funktioniert.

REPAIR TABLE <table_name> USE_FRM;
Kennzeichen
quelle
3

Ich habe myisamchk: error: myisam_sort_buffer_size is too smallals Fehler bekommen.

Die Lösung

myisamchk -r -v mysql/<DB_NAME>/<TABLE_NAME> --sort_buffer_size=2G
ThorstenS
quelle
2

Gehen Sie zu data_dirund entfernen Sie die Your_table.TMPDatei, nachdem Sie die <Your_table>Tabelle repariert haben .

Humbertosmen
quelle
Wo liegt data_dir?
CMCDragonkai
1
Suchen Sie mit diesem Befehl danach grep -r datadir /etc/mysql/. Sollte /var/lib/mysqlunter Debian und Ubuntu sein.
ThorstenS
1

Dies ist eine 100% ige Lösung. Ich habe es selbst versucht.

myisamchk -r -v -f --sort_buffer_size = 128M --key_buffer_size = 128M / var / lib / mysql / databasename / tabloname

cryptox1
quelle
0

Ich habe die Optionen in den vorhandenen Antworten ausprobiert, hauptsächlich die als korrekt markierte, die in meinem Szenario nicht funktioniert hat. Was jedoch funktionierte, war die Verwendung von phpMyAdmin. Wählen Sie die Datenbank und dann die Tabelle aus. Wählen Sie im unteren Dropdown-Menü "Tabelle reparieren".

  • Servertyp: MySQL
  • Serverversion: 5.7.23 - MySQL Community Server (GPL)
  • phpMyAdmin: Versionsinformationen: 4.7.7
user3417257
quelle