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.