Cambié el datadir de una instalación de MySQL y todas las bases se movieron correctamente, excepto una. Me puedo conectar y USEla base de datos. SHOW TABLESTambién me devuelve todas las tablas correctamente, y los archivos de cada tabla existen en el directorio de datos MySQL.
Sin embargo, cuando trato de hacer SELECTalgo de la tabla, recibo un mensaje de error de que la tabla no existe. Sin embargo, esto no tiene sentido ya que pude mostrar la misma tabla a través de una SHOW TABLESdeclaración.
Mi conjetura es que SHOW TABLESenumera la existencia del archivo pero no comprueba si un archivo está dañado o no. En consecuencia, puedo enumerar esos archivos pero no acceder a ellos.
Sin embargo, es simplemente una suposición. Nunca he visto esto antes. Ahora, no puedo reiniciar la base de datos para la prueba, pero todas las demás aplicaciones que la utilizan funcionan bien. Pero eso es solo una suposición, nunca había visto esto antes.
¿Alguien sabe por qué ocurre esto?
Ejemplo:
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