Prima di tutto, dovresti sapere che le chiavi e gli indici sono sinonimi in MySQL. Se guardi la documentazione sulla sintassi CREATE TABLE , puoi leggere:
KEY
è normalmente un sinonimo di INDEX
. L'attributo chiave PRIMARY KEY
può anche essere specificato come KEY
se fosse fornito in una definizione di colonna. Questo è stato implementato per compatibilità con altri sistemi di database.
Ora, il tipo di errore che stai ricevendo può essere dovuto a due cose:
- Problemi relativi al disco sul server MySQL
- Chiavi / tabelle danneggiate
Nel primo caso, vedrai che l'aggiunta di un limite alla tua query potrebbe risolvere temporaneamente il problema. Se questo funziona per te, probabilmente hai una tmp
cartella troppo piccola per le dimensioni delle query che stai tentando di fare. Puoi quindi decidere o tmp
ingrandire o ridurre le tue query! ;)
A volte, tmp
è abbastanza grande ma si riempie ancora, dovrai fare un po 'di pulizia manuale in queste situazioni.
Nel secondo caso, ci sono problemi reali con i dati di MySQL. Se riesci a reinserire facilmente i dati, ti consiglio di eliminare / ricreare la tabella e reinserire i dati. Se non puoi, puoi provare a riparare il tavolo in posizione con il tavolo REPAIR . È un processo generalmente lungo che potrebbe benissimo fallire.
Guarda il messaggio di errore completo che ricevi:
File chiave non corretto per la tabella "FILEPATH.MYI"; prova a ripararlo
Nel messaggio viene menzionato che puoi provare a ripararlo. Inoltre, se guardi il FILEPATH effettivo che ottieni, puoi saperne di più:
se è qualcosa di simile /tmp/#sql_ab34_23f
significa che MySQL deve creare una tabella temporanea a causa delle dimensioni della query. Lo memorizza in / tmp e che non c'è abbastanza spazio in / tmp per quella tabella temporanea.
se invece contiene il nome di una tabella effettiva, significa che questa tabella è molto probabilmente danneggiata e dovresti ripararla.
Se identifichi che il tuo problema è con la dimensione di / tmp, leggi questa risposta a una domanda simile per la correzione: MySQL, errore 126: file chiave non corretto per la tabella .