Come risolvere l’errore del database MySQL “File di chiave errato per la tabella”.
Riassunto: Questo blog tratta in dettaglio l'errore MySQL "File chiave errato per la tabella". Descrive le possibili cause dell'errore e le soluzioni per risolverlo. Per risolvere l'errore causato da tabelle corrotte, provare a utilizzare il software Stellar Repair for MySQL. Utilizzate la versione demo del software per riparare il database e le sue tabelle corrotte e visualizzate in anteprima le tabelle recuperabili per verificare l'integrità dei dati.
È possibile che si verifichi l’errore MySQL “Incorrect Key File for Table” quando si esegue una query MySQL di grandi dimensioni. Ad esempio, alcuni utenti hanno segnalato di aver ricevuto questo errore durante l’esecuzione di una query per recuperare migliaia di record da una tabella utilizzando più di una JOIN.
Perché MySQL restituisce l’errore ‘Incorrect Key File for Table’ quando si esegue una query?
Il messaggio di errore completo di MySQL “File chiave errato per la tabella ‘FILEPATH.MYI’; provare a ripararlo” suggerisce che si può provare a riparare la chiave. L’esame della tabella FILEPATH può aiutare a trovare maggiori dettagli sull’errore:
- Se il FILEPATH è simile a ‘/tmp/#sql_xxxx.MYI‘, significa che la query sta restituendo un insieme di risultati di grandi dimensioni. La cartella/tmp, utilizzata per memorizzare una tabella temporanea contenente l’insieme di risultati più grande, è troppo piccola per le dimensioni della query. In sostanza, nella cartella /tmp non c’è spazio sufficiente per la tabella temporanea.
- Se il FILEPATH contiene il nome della tabella del database, è probabile che la tabella sia corrotta.
Possibili cause dell’errore MySQL “File chiave errato per la tabella” e relative soluzioni
L’errore potrebbe essere dovuto a un problema di spazio su disco o alla corruzione della tabella MySQL. Continuate a leggere per sapere come potete risolvere questi due problemi.
Causa 1 – Spazio su disco insufficiente nella cartella temporanea (/Tmp)
Nota: l‘errore non si verifica durante l’esecuzione di singole query, ma può verificarsi quando si eseguono query di grandi dimensioni contemporaneamente sullo stesso server MySQL. |
Il motivo principale per cui si verifica l’errore “Incorrect key file” di MySQL è che la query sta recuperando dati superiori alla dimensione della cartella /tmp (cioè la cartella utilizzata per memorizzare le tabelle temporanee).
Soluzione – Cambiare la posizione della cartella “/temp
Prima di tutto, è necessario determinare se la partizione del disco è piena osservando le dimensioni della cartella /tmp. Eseguire il comando df con l’opzione ‘-h‘ per verificare l’utilizzo del disco del file system in forma umanamente leggibile:
df -h
Se la partizione è piena, cambiate la posizione della cartella /tmp in un disco con molto spazio libero. Modificare la posizione del file nel file di configurazione di MySQL (.cnf).
A volte la cartella /tmp è abbastanza grande, ma potrebbe comunque riempirsi. In questo caso, è necessario ripulire manualmente lo spazio nella cartella.
Causa 2 – Chiavi o tabella corrotte
Il danneggiamento della tabella è un altro motivo che può portare all’errore “File chiave errato per la tabella”.
Soluzione – Ricreare o riparare la tabella danneggiata
Per risolvere il problema, eliminare/ricreare la tabella danneggiata e quindi reinserire i dati.
Ad esempio, nella seguente query viene utilizzata l’operazione ‘DELETE’ per eliminare la tabella e successivamente il comando ‘OPTIMIZE’ TABLE per liberare spazio su disco.
mysql> CANCELLA tbl_nome DOVE id < 200000;
mysql> OTTIMIZZA TABLE tbl_name;
Se non è possibile reinserire i dati, provare a riparare la tabella. Per le tabelle MyISAM, è possibile utilizzare il comando ‘REPAIR table’ per risolvere il problema:
RIPARAZIONE TABLE tbl_name USE_FRM;
Questo comando funziona solo sulle tabelle MyISAM. Per riparare le tabelle con il motore di database InnoDB, consultate i modi migliori per riparare il danneggiamento delle tabelle InnoDB in MySQL. Tuttavia, eseguire un comando di riparazione per ogni tabella della query può essere un processo lungo e dispendioso.
Cos’altro si può fare per riparare le tabelle corrotte?
Utilizzate il software Stellar Repair for MySQL per riparare le tabelle corrotte. Il software aiuta a riparare rapidamente il database MySQL e tutti i suoi oggetti in pochi clic. Recupera tutti i dati dal database danneggiato senza perdita di dati.
Conclusione
Quando si verifica l’errore MySQL “Incorrect Key File for Table”, la prima cosa da fare è controllare la posizione della cartella /tmp per assicurarsi che abbia abbastanza spazio su disco per memorizzare le tabelle temporanee. In caso contrario, cambiate la posizione della cartella in un disco che abbia un ampio spazio libero. Se non ci sono problemi di spazio su disco, è probabile che la tabella del database sia corrotta e debba essere riparata. Se non riuscite a riparare la tabella manualmente, potete utilizzare un software di MySQL database repair.