J'ai changé le datadir d'une installation MySQL et toutes les bases se sont déplacées correctement sauf une. Je peux me connecter et USE
la base de données. SHOW TABLES
me renvoie également toutes les tables correctement, et les fichiers de chaque table existent sur le répertoire de données MySQL.
Cependant, lorsque j'essaie de SELECT
trouver quelque chose dans la table, j'obtiens un message d'erreur indiquant que la table n'existe pas. Pourtant, cela n'a pas de sens puisque j'ai pu montrer le même tableau à travers la SHOW TABLES
déclaration.
Je suppose que cela SHOW TABLES
répertorie l'existence du fichier mais ne vérifie pas si un fichier est corrompu ou non. Par conséquent, je peux lister ces fichiers mais ne pas y accéder.
Néanmoins, ce n'est qu'une supposition. Je n'avais jamais vu ça avant. Maintenant, je ne peux pas redémarrer la base de données pour les tests, mais toutes les autres applications qui l'utilisent fonctionnent correctement. Mais c'est juste une supposition, je n'ai jamais vu ça auparavant.
Est-ce que quelqu'un sait pourquoi cela se produit?
Exemple:
mysql> SHOW TABLES;
+-----------------------+
| Tables_in_database |
+-----------------------+
| TABLE_ONE |
| TABLE_TWO |
| TABLE_THREE |
+-----------------------+
mysql> SELECT * FROM TABLE_ONE;
ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist