Reparar tabelas corrompidas no MySQL

Já precisou reparar tabelas corrompidas em seu banco de dados MySQL?

Por vezes, pode acontecer de uma tabela do MySQL estar corrompida. Isso acontece quando o storage engine da tabela é o MyISAM. O MyISAM não é mais o motor padrão do MySQL desde a versão 5.6. O padrão atual é o InnoDB (default na 5.6 e 5.7 e possivelmente nas próximas), onde não acontece esse tipo de dificuldade.

Documentação oficial: https://dev.mysql.com/doc/refman/8.0/en/corrupted-myisam-tables.html.

Por que as tabelas corrompem?

Ainda que o formato MyISAM seja bom, útil e confiável (todas as alterações feitas em uma tabela feita por uma instrução SQL são gravadas antes que a instrução retorne), as tabelas podem corromper se algum dos seguintes eventos ocorrer:

- O processo mysqld é interrompido (kill) no meio da escrita;
- O servidor de banco de dados é desligado;
- Falhas de hardware;
- Algum bug no MySQL ou no MyISAM;
- Uso de um programa externo modificando uma tabela enquanto também é modificada pelo server ao mesmo tempo.

Reparar tabelas corrompidas

As tabelas podem ser reparadas através do phpMyAdmin e você mesmo tem acesso a esta funcionalidade.

Caso não conheça o processo para acesso ao painel de hospedagem web, clique aqui.

Primeiramente iremos acessar a opção phpMyAdmin, dentro de "Gerenciar bancos MySQL", no painel de hospedagem web ou em http://mysql.seudominio.com.br, trocando seudominio.com.br pelo seu domínio. Você será redirecionado para a página de login do seu banco de dados, onde você deve colocar o usuário e senha do mesmo. 

Caso não saiba a senha, poderá alterá-la, mas isso pode fazer com que certo sistema que o utilize deixe de funcionar. O ideal é verificar pela senha no código fonte.

É importante realizar o backup da base de dados antes de fazer qualquer alteração, através da opção de backup do Painel Sites, em Gerenciar bancos MySQL ou pelo phpMyAdmin.

Reparar tabelas corrompidas no MySQL

Também pode ser alterado o storage engine para o InnoDB através do seguinte comando e assim evitar futuras dificuldades:
Altere o termo nome-da-tabela de acordo com a situação.

ALTER TABLE nome-da-tabela ENGINE=InnoDB;