Ho cambiato il datadir di un'installazione di MySQL e tutte le basi si sono spostate correttamente tranne una. Posso connettermi e USE
il database. SHOW TABLES
inoltre restituisce correttamente tutte le tabelle e i file di ciascuna tabella esistono nella directory dei dati MySQL.
Tuttavia, quando provo a SELECT
qualcosa dalla tabella, ricevo un messaggio di errore che la tabella non esiste. Tuttavia, questo non ha senso poiché sono stato in grado di mostrare la stessa tabella attraverso l' SHOW TABLES
affermazione.
La mia ipotesi è che SHOW TABLES
elenca l'esistenza dei file ma non controlla se un file è danneggiato o meno. Di conseguenza, posso elencare quei file ma non accedervi.
Tuttavia, è solo una supposizione. Non l'ho mai visto prima. Ora, non riesco a riavviare il database per il test, ma ogni altra applicazione che lo utilizza funziona correttamente. Ma è solo una supposizione, non l'ho mai visto prima.
Qualcuno sa perché questo sta accadendo?
Esempio:
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