Como corrigir One or more database tables are unavailable
O que é o erro Database Tables Unavailable no WordPress?
Esse aviso aparece quando o WordPress conecta ao banco MySQL/MariaDB, mas o servidor recusa o acesso a uma tabela específica porque ela está marcada como crashed (corrompida). Diferente do erro de conexão, aqui o banco responde: o problema é que uma tabela como wp_posts ou wp_options ficou inconsistente e precisa de reparo antes de voltar a funcionar.
Como identificar
- O wp-admin mostra “One or more database tables are unavailable. The database may need to be repaired.”.
- No log do MySQL aparece “Table ‘./banco/wp_posts’ is marked as crashed and should be repaired”.
- Páginas ou áreas específicas do site somem, enquanto o resto carrega, dependendo da tabela afetada.
- O aviso surge após queda do servidor, disco cheio ou reinício forçado do MySQL no meio de uma escrita.
Como prevenir
- Mantenha backups automáticos diários do banco em local externo para restaurar rápido
- Monitore o espaço em disco do servidor para o MySQL nunca ficar sem espaço de escrita
- Migre as tabelas de MyISAM para InnoDB, que é mais resistente a corrupção após quedas
Causa
- Tabela MyISAM marcada como crashed após o MySQL ser encerrado abruptamente durante uma escrita.
- Disco do servidor cheio, impedindo o MySQL de gravar os arquivos .MYD/.MYI da tabela por completo.
- Índice da tabela estourado ou inconsistente, comum em tabelas MyISAM grandes como wp_postmeta.
- Setor defeituoso no disco onde ficam os arquivos do banco, corrompendo os dados da tabela.
- Cópia incompleta dos arquivos da tabela durante uma migração entre servidores.
Como resolver
- Faça backup do banco antes de reparar: exporte o banco pelo phpMyAdmin do painel da hospedagem. Operar sobre uma tabela já corrompida tem risco, e o backup é a rede de segurança.
- Ative o modo de reparo do WordPress: via FTP, adicione a constante ao wp-config.php antes da linha que pede para parar de editar:
define( 'WP_ALLOW_REPAIR', true ); - Acesse a página de reparo: abra seudominio.com/wp-admin/maint/repair.php e clique em "Reparar banco de dados". A rota funciona sem login enquanto a constante estiver ativa e lista exatamente quais tabelas precisam de reparo.
- Remova a constante depois: apague a linha WP_ALLOW_REPAIR do wp-config.php assim que terminar. Deixá-la ativa mantém a rota de reparo aberta sem autenticação.
- Repare direto no MySQL se o reparo do WP não bastar: use o phpMyAdmin ou o WP-CLI para rodar o reparo sobre a tabela nomeada no erro, especialmente em tabelas InnoDB que o reparo do WordPress não cobre.
-- Reparo da tabela apontada no erro, via phpMyAdmin (aba SQL) ou cliente mysql
REPAIR TABLE wp_options;
CHECK TABLE wp_options;
-- REPAIR so atua em MyISAM. Para tabela InnoDB, reconstrua o engine:
ALTER TABLE wp_posts ENGINE = InnoDB;














