108 votes

MySQL : #126 - fichier de clé incorrecte pour la table

J’ai obtenu l’erreur suivante depuis une requête MySQL.

``

Je n’ai pas même déclaré une clé de cette table, mais je n’ai pas les indices. Personne sait ce qui pourrait être le problème ?

166voto

Monsters X Points 1016

Chaque fois que cela s’est passé, il a été un disque plein. D’après mon expérience

35voto

snooze92 Points 1108

Tout d'abord, vous devez savoir que les clés et les indices sont synonymes dans MySQL. Si vous regardez la documentation sur la Syntaxe CREATE TABLE, vous pouvez lire:

KEY est normalement synonyme INDEX. L'attribut clé PRIMARY KEY peut également être spécifié comme juste KEY lorsqu'il est administré dans une définition de colonne. Cela a été mis en œuvre pour assurer la compatibilité avec d'autres systèmes de base de données.


Maintenant, le genre d'erreur que vous obtenez peut être dû à deux choses:

  • Les problèmes de disque sur le serveur MySQL
  • Corrompu touches/tables

Dans le premier cas, vous allez voir que l'ajout d'une limite à votre requête peut résoudre le problème temporairement. Si ce n'est pour vous, vous avez probablement un tmp le dossier est trop petite pour la taille des requêtes que vous essayez de faire. Vous pouvez ensuite décider ou de faire tmp plus grand, ou pour faire vos requêtes les plus petits! ;)

Parfois, tmp est suffisamment grand, mais toujours est plein, vous devrez faire un nettoyage manuel dans ces situations.

Dans le second cas, il y a des problèmes avec MySQL données. Si vous pouvez ré-insérer les données facilement, je voudrais des conseils pour simplement supprimer/recréer la table, et ré-insérer les données. Si vous ne pouvez pas, vous pouvez essayer de réparer la table en place avec la RÉPARATION de la table. Il est généralement un processus long qui peut très bien échouer.


Regarder le complet de message d'erreur , vous bénéficiez de:

Incorrect key file for table 'FILEPATH.MYI'; essayer de le réparer

Il mentionne, dans le message que vous pouvez essayer de le réparer. Aussi, si vous regardez le véritable CHEMIN d'accès du fichier que vous obtenez, vous pouvez en savoir plus:

  • si c'est quelque chose comme /tmp/#sql_ab34_23f cela signifie que MySQL a besoin de créer une table temporaire en raison de la taille de requête. Il les stocke dans /tmp, et qu'il n'y a pas assez d'espace dans votre /tmp pour que la table temporaire.

  • si elle contient le nom d'une table réelle au lieu de cela, cela signifie que ce tableau est très probablement endommagé et vous devez le réparer.


Si vous vous apercevez que votre problème est avec la taille de /tmp, il suffit de lire cette réponse à une question similaire pour la correction: MySQL, Erreur 126: clé Incorrecte de fichier pour la table.

16voto

user387049 Points 1420

Les instructions suivantes m’a permis de recréer mon répertoire tmp et résoudre le problème :

Notez qu’en modifiant la securetmp script Perl, vous pouvez définir manuellement la taille du répertoire tmp vous-même, mais juste en cours d’exécution du script a augmenté la taille du répertoire tmp sur notre serveur à partir d’environ 450 Mo à 4,0 Go.

10voto

junmats Points 1042

Erreur #126 survient généralement lorsque vous avez obtenu une table corrompue. La meilleure façon de résoudre ce problème consiste à effectuer la réparation. Cet article peut aider à :

http://dev.MySQL.com/doc/RefMan/5.0/en/Repair-table.html

1voto

Bajrang Points 1589

Essayez d’utiliser la limite dans votre requête. C’est à cause de disque plein, comme l’a dit @Monsters X.

J’ai aussi fait face à ce problème et résolu de limite dans la requête, car des milliers de documents étaient là. Fonctionne maintenant bien  :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X