Tables MyISAM corrompues
<<<
Clients is using or hasn't closed the table properly Le moteur de tables MyISAM
>>>

15.1.4 Problèmes avec les tables MyISAM
15.1 Le moteur de tables MyISAM
15 Types de tables MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Tables MyISAM corrompues
->Clients is using or hasn't closed the table properly

15.1.4.2 Clients is using or hasn't closed the table properly

Chaque fichier MyISAM .MYI possède un compteur dans l'entête qui peut être utilisé pour savoir si une table a été fermée Proprement.

Si vous obtenez l'avertissement suivant de la part de CHECK TABLE ou myisamchk :

# clients is using or hasn't closed the table properly
cela signifie que le compteur n'est plus synchrone. Cela ne signifie Pas que la table est corrompue, mais que vous devez au moins effectuer une vérification sur la table pour vous assurer de son bon fonctionnement.Le compteur fonctionne de la façon suivante :
  • La première fois qu'une table est mise à jour dans MySQL, un compteur dans l'entête du fichier est incrémenté.
  • Le compteur ne change pas pour les mises à jours suivantes.
  • Lors de la fermeture de la dernière instance d'une table (à cause d'un FLUSH ou qu'il n'y a plus de place dans le cache de la table) le compteur est decrémenté si la table n'a pas été mise à jour.
  • Lorsque vous réparez la table ou vérifiez quel est en bon état, le compteur est remis à zéro.
  • Pour éviter les problèmes d'interactions avec d'autres processus qui peuvent vérifier la table, le compteur n'est pas décrémenté à la fermeture si sa valeur était zéro.
En d'autres termes, les seuls moyens d'obtenir ce genre d'erreur sont :
  • Les tables MyISAM sont copiés sans LOCK et FLUSH TABLES .
  • MySQL a planté entre une mise à jour et la fermeture finale. (Notez que la table peut encore être bonne, vu que MySQL écrit toujours pour tout entre deux requêtes.)
  • quelqu'un a exécuté myisamchk --recover ou myisamchk --update-state sur une table qui était utilisée par mysqld .
  • Plusieurs serveurs mysqld utilisent la table et l'un d'eux a exécuté dessus un REPAIR ou un CHECK pendant qu'elle était utilisée par un autre serveur. Dans ce cas là, l'utilisation de CHECK n'est pas très grave (même si vous obtiendrez des avertissements sur les autres serveurs), mais REPAIR doit être évitée vu qu'elle remplace actuellement le fichier de données part un nouveau, ce qui n'est pas signalé aux autres serveurs.

<< Clients is using or hasn't closed the table properly >>
Tables MyISAM corrompues Problèmes avec les tables MyISAM Le moteur de tables MyISAM