REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name...] [QUICK] [EXTENDED] [USE_FRM]
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
! See Secção A.4.1, “O Que Fazer Se o MySQL Continua Falhando”. See
Secção 7.1.3, “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 MySQL 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 MySQL
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 MySQL 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 MySQL 4.1.1, o comando REPAIR
não
era gravado no log binário. Desde o MySQL 4.1.1. 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.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.