Sintaxe do REPAIR TABLE


REPAIR TABLE funciona somente em tabelas MyISAM e é a mesma coisa que executar myisamchk -r nome_tabela na tabela.

Normalmente você nunca deve executar este comando, mas se um disastre ocorrer você vai precisar recuperar seus dados de uma tabela MyISAM utilizando REPAIR TABLE. Se as suas tabelas estiverem muito corrompidas, você deve encontrar a razão, para eleiminar a necessidade de se usar REPAIR TABLE! Leia Seção A.4.1, "O Que Fazer Se o MariaDB Continua Falhando". Leia "Problemas com Tabelas MyISAM".

REPAIR TABLE repara uma tabela possivelmente corrompida. O comando retorna uma tabela com as seguintes colunas:

Coluna Valor
Table Nome da Tabela
Op Sempre repair
Msg_type Um dos seguintes: status, error, info ou warning
Msg_text A mensagem

Note que a instrução pode produzir várias linhas de informações para cada tabela recuperada. A ultima linha será de Msg_type status e normalmente deve exibir OK. Se o retorno não for OK, você pode tentar reparar a tabela com myisamchk -o, já que REPAIR TABLE ainda não implementa todas as opções de myisamchk. Futuramente iremos torná-lo mais flexível.

Se o parâmetro QUICK for especificado, REPAIR tenta reparar somente a árvore de índices.

Se você utilizar EXTENTED, o MariaDB criará o índice, registro a registro em vez de criar um índice de uma vez com ordenação; Isto pode ser melhor que a ordenação em chaves de tamanho fixo se você tiver grandes chaves do tipo char() que compactam muito bem.

No MariaDB 4.0.2, existe um modo USE_FRM para REPAIR. Use-o se o arquivo .MYI estiver faltando ou o seu cabeçalho estiver corrompido. Neste modo o MariaDB recriará a tabela, usando a informação do arquivo .frm. Este tipo de reparo não pode ser feito com myisamchk.

Aviso: Se o mysqld morre durante um REPAIR TABLE, é essencial que você faça imediatamente outro REPAIR na tabela antes de executar qualquer outro comando nela. (Claro que é sempre bom inciar com um backup). No pior caso você pode ter um novo arquivo de índice limpo sem informação sobre o arquivo de dados e quando você executar o próximo comando o arquivo de dados pode ser sobreescrito. Isto não é um cenário desejável, mas possível.

Antes do MariaDB, o comando REPAIR não era gravado no log binário. Desde o MariaDB. eles são escritos no log binário a menos que a palavra chave opcional NO_WRITE_TO_BINLOG (ou seu alias LOCAL) seja usada.

Retornar