Tout d'abord, vous devez savoir que les clés et les index sont des synonymes dans MySQL. Si vous regardez la documentation sur la syntaxe CREATE TABLE , vous pouvez lire:
KEY
est normalement synonyme de INDEX
. L'attribut key PRIMARY KEY
peut également être spécifié comme KEY
étant donné dans une définition de colonne. Cela a été mis en œuvre pour la compatibilité avec d'autres systèmes de base de données.
Maintenant, le type d'erreur que vous obtenez peut être dû à deux choses:
- Problèmes de disque sur le serveur MySQL
- Clés / tables corrompues
Dans le premier cas, vous verrez que l'ajout d'une limite à votre requête peut résoudre temporairement le problème. Si cela le fait pour vous, vous avez probablement un tmp
dossier trop petit pour la taille des requêtes que vous essayez de faire. Vous pouvez alors décider ou tmp
agrandir, ou réduire vos requêtes! ;)
Parfois, tmp
c'est assez grand mais toujours plein, vous devrez effectuer un nettoyage manuel dans ces situations.
Dans le second cas, il y a de réels problèmes avec les données de MySQL. Si vous pouvez réinsérer facilement les données, je vous conseillerais de simplement supprimer / recréer la table et de réinsérer les données. Si vous ne pouvez pas, vous pouvez essayer de réparer la table en place avec REPAIR table . C'est un processus généralement long qui pourrait très bien échouer.
Regardez le message d'erreur complet que vous obtenez:
Fichier de clé incorrect pour la table 'FILEPATH.MYI'; essayez de le réparer
Il mentionne dans le message que vous pouvez essayer de le réparer. De plus, si vous regardez le FILEPATH réel que vous obtenez, vous pouvez en savoir plus:
si c'est quelque chose comme /tmp/#sql_ab34_23f
ça, cela signifie que MySQL doit créer une table temporaire en raison de la taille de la requête. Il le stocke dans / tmp, et qu'il n'y a pas assez d'espace dans votre / tmp pour cette table temporaire.
s'il contient le nom d'une table réelle à la place, cela signifie que cette table est très probablement corrompue et que vous devez la réparer.
Si vous identifiez que votre problème est de la taille de / tmp, lisez simplement cette réponse à une question similaire pour le correctif: MySQL, Erreur 126: fichier de clé incorrect pour la table .