Nuestro team de trabajo ha estado por horas buscando soluciones a tu pregunta, te dejamos la resolución así que nuestro deseo es que resulte de mucha ayuda.
Solución:
Esta situación se parece mucho a una publicación que respondí hace dos años (la tabla SELECCIONAR de InnoDB devuelve ERROR 2006 (HY000): el servidor MySQL se ha ido (después de un corte de energía))
Primero, aquí está la arquitectura InnoDB
En esa publicación, básicamente señalo que los metadatos de la tabla todavía están presentes dentro del archivo de espacio de tabla del sistema ibdata1.
cuando corriste SHOW TABLES;
, todo lo que mysqld hizo fue reportar el .frm
archivos Es posible crear la tabla como MyISAM porque no tiene archivos adjuntos a ibdata1 ni a ningún otro metadato. Sin embargo, no puede convertirlo a InnoDB porque los metadatos de alguna manera imaginan que el .frm
y algún tablespace_id se adjunta al nombre de la tabla. Basado en mi publicación anterior, simplemente mysqldump todas las otras tablas y llamaría a su mesa una causa perdida. Sin embargo, Percona tiene el kit de herramientas de recuperación de datos para tal ocasión.
En la página web sobre el kit de herramientas de recuperación de datos dice
La herramienta de recuperación de datos de Percona para InnoDB es un kit de herramientas gratuito para recuperar datos perdidos o corruptos de las tablas de InnoDB. Proporciona una forma de extraer los datos de InnoDB de archivos o dispositivos sin procesar en un formato separado por tabulaciones cuando la recuperación estándar de InnoDB no se puede usar por algún motivo, como una tabla caída o una corrupción grave que impide que InnoDB reconozca los datos. Se puede usar para la recuperación de MySQL para recuperar tablas eliminadas, recuperar versiones anteriores de filas actualizadas o corregir la corrupción del archivo InnoDB después de una falla de hardware, como una falla de memoria o un cableado defectuoso.
Percona ha utilizado estas herramientas para realizar la recuperación de datos MySQL para muchos clientes, incluidos conjuntos de datos extremadamente grandes. Aunque las herramientas son poderosas, realizar correctamente la recuperación de datos de InnoDB requiere un conocimiento experto del formato de almacenamiento y el código fuente de InnoDB, además de experiencia e intuición. Percona puede ayudar con nuestro servicio de recuperación de datos.
no lo he usado pero si Percona lo hizo, deberías intentarlo.
Si tiene una copia de seguridad de esa tabla perdida (en forma de mysqldump), debe seguir los pasos de mi publicación anterior y luego cargar la copia de seguridad de la tabla perdida.
SUGERENCIA
Una vez que solucione esta situación, debe ajustar InnoDB para eliminar los cambios en el disco.
[mysqld]
innodb_fast_shutdown=0
innodb_max_dirty_pages_pct=0
innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1
De esa manera, cuando cierra mysql, InnoDB puede eliminar los cambios de manera más completa.
Si desea una mayor seguridad de que InnoDB se descarga en el disco, debe usar MySQL en Linux.
Sí, puedes intentar reparar tu tabla innoDB
Primero debe hacer una copia de seguridad de sus tablas.
-
Detén tu
MySQL
Servicio -
Agregue o cambie el valor en su
my.ini
innodb_force_recovery
opción.
[mysqld] innodb_force_recovery = 1 [for better crash recovery]
-
haga una copia de seguridad de todos los datos de “C:xamppmysqldata” en otra carpeta, por ejemplo: “C:xamppmysqldatabackup” o
-
llevar
mysqldump
de la base de datos o tabla que se ha bloqueado. -
Comienza tu
mysql
Servicio.
Los niveles 0 a 4 son seguros, pero si quieres usar los niveles 5 o 6 puedes perder algunos datos
-
comentario
innodb_force_Recovery= 1
bajomy.ini
Archivo -
restaurar la tabla o base de datos.
Compruebe la documentación de Forcing InnoDB Recovery en MySQL: http://dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html
Agradecemos que desees añadir valor a nuestra información aportando tu veteranía en las crónicas.