Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro:existe um espaço de tabela para a tabela xxx. Por favor, DESCARTE o espaço de tabela antes de IMPORTAR


Um pouco atrasado aqui, mas geralmente vi esse problema ocorrer quando você recebe um erro 'tablespace full' ao executar em um modo 'innodb_file_per_table'. Sem entrar em muitos detalhes (mais aqui ), o tablespace do servidor de banco de dados é definido pela configuração innodb_data_file_path e, por padrão, é bastante pequeno. Mesmo ampliado, o 'tablespace full' ainda pode ocorrer com consultas maiores e tal (muitas 'coisas' que não são da tabela são armazenadas lá, logs de desfazer, caches, etc...).

De qualquer forma, descobri que se você procurar no diretório do sistema operacional onde os arquivos por tabela estão armazenados, /var/lib/mysql por padrão no OSX, /usr/local/var/mysql com homebrew iirc, você encontrará um arquivo tablename.ibd órfão sem seu arquivo tablename.frm complementar normal. Se você mover esse arquivo .ibd para um local temporário seguro (só por segurança), isso deve corrigir o 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/

Uma ressalva, porém, verifique se o que está causando o problema originalmente, por exemplo, consulta de longa duração, tabela bloqueada, etc... foi limpa. Caso contrário, você acaba com outro arquivo .ibd órfão quando tenta uma segunda vez.