Informática Numaboa
Recuperando tabelas bichadas
Sab 21 Fev 2009 20:33 |
- Detalhes
- Categoria: Dicas MySQL
- Atualização: Domingo, 22 Fevereiro 2009 11:26
- Autor: vovó Vicki
- Acessos: 5881
Meu sistema de gerenciamento de conteúdo (CMS) preferido é o Joomla e este sistema de gerenciamento depende e solicita intensamente o banco de dados MySQL. Como existem tabelas que são atualizadas com uma frequência muito grande (quanto mais o site é visitado, mais elas são alteradas), me deparei algumas vezes com tabelas corrompidas que impediam o acesso aos sites. Como um site fora do ar é a última coisa que um webmaster deseja, nada mais do que a obrigação de saber como corrigir tabelas detonadas para que tudo volte ao normal.
Identificando a tabela corrompida
Ao acessar um site com problema, se este estiver relacionado ao banco de dados a mensagem de erro já nos indica a tabela culpada. Em 99% das vezes, o problema que encontrei foi com a tabela jos_session, mas isto tem uma importância secundária. O que importa é: o que fazer quando uma tabela corrompida está travando o site?
Existem duas situações: você tem acesso ao seu servidor e pode acionar diretamente o MySQL ou você tem acesso ao phpMyAdmin, uma interface de gerenciamento deste banco de dados. Vou explicar como agir nos dois casos.
Usando o phpMyAdmin
Entre no phpMyAdmin e, no painel da esquerda, selecione a base dados do seu site. Isto faz com que todas as tabelas desta base de dados sejam apresentadas. Marque a tabela que está dando problemas, role até o final da página e escolha [Repair table].
Isto deve resolver o problema. Teste se tudo está OK chamando novamente o seu site (espero que sim!).
Com acesso ao seu servidor
Tendo acesso direto ao seu servidor, a coisa fica muito mais fácil. Entre no seu banco de dados:
# mysql -p Enter password:
Digite sua senha:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 49893 to server version: 4.1.14-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
A seguir, chame a sua base de dados (troque baseDeDados pelo nome da sua base de dados):
mysql> use baseDeDados;
Depois disto, peça para checar a tabela que está dando problemas (digamos que o nome da tabela seja jos_session):
mysql> check table jos_session;
Se a resposta for "corrupted" ou coisa do gênero, corrija tudo com um:
mysql> repair table jos_session;
Só para garantir, cheque a tabela novamente:
mysql> check table jos_session; +--------------------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +--------------------+-------+----------+----------+ | joomla.jos_session | check | status | OK | +--------------------+-------+----------+----------+ 1 row in set (0.00 sec)
Se o status for OK, isto resolveu o problema desta tabela. Chame novamente o seu site para ver se tudo voltou ao normal.