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.
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;