Uma tabela marcada como «crashed»: o que quer dizer e como a reparar

A mensagem Table is marked as crashed and should be repaired quer dizer que uma tabela, quase sempre do tipo MyISAM, ficou com o ficheiro inconsistente, em regra por uma paragem a meio de uma escrita. Resolve-se, na maior parte dos casos, com Reparar tabela no phpMyAdmin ou no cPanel. Faça primeiro uma cópia do que consegue ler.

Passo a passo

1 Cópia primeiro. Se consegue exportar, exporte. Veja exportar com o phpMyAdmin. Se não consegue, guarde pelo menos o nome da tabela e a mensagem completa.
2 No cPanel, abra MySQL Databases. Em Modify Databases, escolha a base e clique em Repair DB.
3 Ou no phpMyAdmin: abra a base, marque a tabela, e no menu «Com os seleccionados» escolha Reparar tabela. É o mesmo que executar REPAIR TABLE nome_da_tabela; no separador SQL.
4 Corra CHECK TABLE nome_da_tabela; e confirme que o estado é OK.
5 Abra o site e confirme que a mensagem desapareceu.
6 Para evitar que volte, converta a tabela para InnoDB: ALTER TABLE nome_da_tabela ENGINE=InnoDB;. Faça-o com a cópia feita.
Situação O que fazer
MyISAM com a mensagem «crashed» REPAIR TABLE. Costuma bastar.
InnoDB com erros O REPAIR TABLE não se aplica. Reponha a partir de uma cópia. Veja repor os seus dados com o JetBackup.
O reparo falha ou perde linhas Reponha a tabela, ou a base, da cópia mais recente que tiver.
No WordPress, vários erros em tabelas Use o reparo do próprio WordPress (abaixo).
O reparo do WordPress deixa uma porta aberta. Acrescente define('WP_ALLOW_REPAIR', true); ao wp-config.php, abra /wp-admin/maint/repair.php no site, repare e retire a linha logo a seguir: enquanto lá estiver, qualquer pessoa pode abrir essa página, sem entrar. E se vê a mensagem uma só vez, após uma falha, pode ter sido um incidente isolado; se volta, ponha o motor InnoDB e veja se há falta de espaço em disco.

Porque acontece

Uma tabela fica marcada como danificada quando algo interrompe a escrita a meio: um reinício do servidor, um processo que morre por falta de recursos, ou a conta sem espaço para gravar. As tabelas MyISAM são as mais sensíveis a isto, porque não têm o registo que o InnoDB usa para se recompor sozinho. É por isso que o conselho de fundo é usar InnoDB. Uma tabela marcada como danificada não quer dizer que alguém entrou no site: quase sempre é só uma escrita que ficou a meio.

Cópias a sério evitam o susto. Quem tem uma cópia diária recupera em minutos. Veja fazer e guardar a sua própria cópia e erro de ligação à base de dados.

O reparo não resolveu ou a base ficou incompleta? Diga-nos o nome da base e a mensagem e vemos o que se recupera.

Abrir um pedido de suporte

VEJA TAMBÉM

Como repor os seus dados com o JetBackup

Erro de ligação à base de dados: as causas por ordem

Limpar e optimizar a base de dados no phpMyAdmin

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde $6.60/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?