sql >> Base de Datos >  >> RDS >> Mysql

Error:Existe espacio de tablas para la tabla xxx. DESECHE el tablespace antes de IMPORTAR

Un poco tarde aquí, pero en general he visto que este problema ocurre cuando obtiene un error de 'tablespace full' cuando se ejecuta en un modo 'innodb_file_per_table'. Sin entrar en demasiados detalles (más aquí ), el tablespace del servidor de la base de datos está definido por la configuración innodb_data_file_path y, de forma predeterminada, es bastante pequeño. Incluso si se hace más grande, el 'tablespace full' aún puede ocurrir con consultas más grandes y cosas por el estilo (muchas 'cosas' que no son de la tabla se almacenan allí, registros de deshacer, cachés, etc.).

De todos modos, descubrí que si busca en el directorio del sistema operativo donde se almacenan los archivos por tabla, /var/lib/mysql por defecto en OSX, /usr/local/var/mysql con homebrew iirc, encontrará un archivo tablename.ibd huérfano sin su archivo tablename.frm compañero normal. Si mueve ese archivo .ibd a una ubicación temporal segura (solo para estar seguro), eso debería solucionar el problema.

$ ls /var/lib/mysql

table1.frm
table1.idb
table2.frm
table2.idb
table3.idb <- problem table, no table3.frm
table4.frm
table4.idb

$ mkdir /tmp/mysql_orphans
$ mv /var/lib/mysql/table3.ibd /tmp/mysql_orphans/

Sin embargo, una advertencia, asegúrese de que lo que esté causando el problema originalmente, p. consulta de ejecución prolongada, tabla bloqueada, etc... se ha borrado. De lo contrario, terminará con otro archivo .ibd huérfano cuando lo intente por segunda vez.