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:
KEYest normalement synonyme de INDEX. L'attribut key PRIMARY KEYpeut é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 tmpdossier trop petit pour la taille des requêtes que vous essayez de faire. Vous pouvez alors décider ou tmpagrandir, ou réduire vos requêtes! ;)
Parfois, tmpc'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 .