Mecanismo de tabela desconhecido 'InnoDB' após excluir o arquivo ibdata1

2

Eu estava tendo innodb com um arquivo ibdata. Eu mudei em my.cnf para ter o arquivo ibd para cada tabela (innodb_file_per_table). então eu corro a seguinte consulta em todas as minhas tabelas innodb para ter seu próprio arquivo ibd

alter table tablename engine=innodb;

agora depois de converter todas as minhas tabelas, o ibdata ainda tem o mesmo tamanho, então eu deletei e reiniciei o mysql. O mysql o criou novamente com tamanho de 10MB (conforme definido em my.cnf) mas o problema agora é que eu posso ver todas as minhas tabelas normalmente quando mostrar tabelas; mas sempre que eu quiser desc tablename ou selecione * de tablename estou recebendo essa mensagem de erro

mysql> desc staff;
ERROR 1286 (42000): Unknown table engine 'InnoDB'

e em show engines não consigo ver innodb na lista !!
Também eu tentei apagar o ib_logfile0 e ib_logfile1, eu tenho outra mensagem

ERROR 1146 (42S02): Table 'DBNAME.TableName' doesn't exist

Eu sei que eu deveria mysqldump e restaurar, mas isso é o que eu fiz :(, alguém tem uma idéia de como excluir o arquivo ibdata1 e manter o mecanismo innodb ativado? Obrigado

    
por Alaa Alomari 02.10.2011 / 10:14

2 respostas

0

Mesmo com a configuração innodb_file_per_table, o ibdata * ainda armazena dados (meta) críticos sobre suas tabelas, você não deveria tê-lo destruído. Estou com medo de que seus dados sejam perdidos, exceto se houver uma maneira de extraí-los dos arquivos idb e restaurá-los após a reconstrução do arquivo ibdata *.

All the metadata still resides in ibdata1 and there is absolutely no way around that. Redo logs and MVCC data also still live with ibdata1.

    
por 25.05.2012 / 07:20
0

Pare o mysql, apague os arquivos de log do innodb, inicie o mysql

    
por 02.10.2011 / 14:01

Tags