Zunächst sollten Sie wissen, dass Schlüssel und Indizes Synonyme in MySQL sind. Wenn Sie sich die Dokumentation zur CREATE TABLE-Syntax ansehen , können Sie Folgendes lesen:
KEY
ist normalerweise ein Synonym für INDEX
. Das Schlüsselattribut PRIMARY KEY
kann auch so angegeben werden, wie KEY
es in einer Spaltendefinition angegeben ist. Dies wurde aus Gründen der Kompatibilität mit anderen Datenbanksystemen implementiert.
Die Art des Fehlers, den Sie erhalten, kann auf zwei Dinge zurückzuführen sein:
- Festplattenprobleme auf dem MySQL-Server
- Beschädigte Schlüssel / Tabellen
Im ersten Fall werden Sie feststellen, dass das Problem durch Hinzufügen eines Limits zu Ihrer Abfrage vorübergehend behoben werden kann. Wenn dies für Sie erledigt ist, haben Sie wahrscheinlich einen tmp
Ordner, der für die Größe der Abfragen, die Sie ausführen möchten, zu klein ist. Sie können dann entscheiden oder tmp
größer machen oder Ihre Anfragen kleiner machen! ;)
Manchmal tmp
ist es groß genug, aber es wird immer noch voll. In diesen Situationen müssen Sie einige manuelle Bereinigungen durchführen.
Im zweiten Fall gibt es tatsächliche Probleme mit den Daten von MySQL. Wenn Sie die Daten einfach wieder einfügen können, würde ich empfehlen, die Tabelle einfach zu löschen / neu zu erstellen und die Daten erneut einzufügen. Wenn Sie dies nicht können, können Sie versuchen, die Tabelle mit der REPAIR-Tabelle zu reparieren . Es ist ein allgemein langwieriger Prozess, der sehr wohl scheitern kann.
Sehen Sie sich die vollständige Fehlermeldung an, die Sie erhalten:
Falsche Schlüsseldatei für Tabelle 'FILEPATH.MYI'; versuche es zu reparieren
In der Nachricht wird erwähnt, dass Sie versuchen können, es zu reparieren. Wenn Sie sich den tatsächlichen FILEPATH ansehen, den Sie erhalten, können Sie mehr herausfinden:
Wenn es so etwas wie ist /tmp/#sql_ab34_23f
, bedeutet dies, dass MySQL aufgrund der Abfragegröße eine temporäre Tabelle erstellen muss. Es speichert es in / tmp und dass in Ihrem / tmp nicht genügend Speicherplatz für diese temporäre Tabelle vorhanden ist.
Wenn es stattdessen den Namen einer tatsächlichen Tabelle enthält, bedeutet dies, dass diese Tabelle sehr wahrscheinlich beschädigt ist und Sie sie reparieren sollten.
Wenn Sie feststellen, dass Ihr Problem die Größe von / tmp hat, lesen Sie einfach diese Antwort auf eine ähnliche Frage für das Update: MySQL, Fehler 126: Falsche Schlüsseldatei für Tabelle .