Recuerda que en las ciencias un problema casi siempre tiene más de una resoluciones, por lo tanto nosotros aquí compartimos lo más óptimo y eficiente.
No puedo abrir el archivo
Si InnoDB devuelve algo como el siguiente error:
ERROR 1016: Can't open file: 'x.ibd'.(errno: 1)
puede ser que un huerfano .frm
El archivo existe. Algo como lo siguiente también puede aparecer en el registro de errores:
InnoDB: Cannot find table test/x from the internal data dictionary InnoDB: ofInnoDB though the .frm filefor the tableexists. Maybe you InnoDB: have deleted and recreated InnoDBdata files but have forgotten InnoDB: todelete the corresponding .frm files ofInnoDBtables?
Si este es el caso, como describe el texto, elimine el huérfano .frm
archivo en el sistema de archivos.
Eliminación de tablas intermedias huérfanas
Una tabla intermedia huérfana puede evitar que descarte el espacio de tabla incluso si está vacío y, por lo general, ocupa espacio innecesario.
Puede ocurrir si MariaDB sale en medio de una operación ALTER TABLE … ALGORITHM=INPLACE. Se enumerarán en la tabla INFORMATION_SCHEMA.INNODB_SYS_TABLES y siempre comenzarán con un #sql-ib
prefix. El acompañante .frm
archivo también comienza con #sql-
pero tiene un nombre diferente.
Para identificar tablas huérfanas, ejecute:
SELECT*FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE'%#sql%';
Cuando se establece innodb_file_per_table, el #sql-*.ibd
El archivo también será visible en el directorio de la base de datos.
Para eliminar una tabla intermedia huérfana:
- Renombrar el
#sql-*.frm
(en el directorio de la base de datos) para que coincida con el nombre base de la tabla intermedia huérfana, por ejemplo:
mv #sql-36ab_2.frm #sql-ib87-856498050.frm
- Suelta la tabla, por ejemplo:
DROPTABLE`#mysql50##sql-ib87-856498050`;
Ver también
- Descripción general de la solución de problemas de InnoDB
El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido por adelantado. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o cualquier otra parte.
Acuérdate de que puedes optar por la opción de comentar si diste con el arreglo.