Cambié el datadir de una instalación de MySQL y todas las bases se movieron correctamente, excepto una. Me puedo conectar y USE
la base de datos. SHOW TABLES
Tambié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 SELECT
algo 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 TABLES
declaración.
Mi conjetura es que SHOW TABLES
enumera 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