Como corrigir tabela wp_posts corrompida
O que é a tabela de posts corrompida no WordPress?
A tabela de posts é onde o WordPress guarda todos os posts, páginas, revisões e itens de menu. Quando ela corrompe, os arquivos de dados ou de índice ficam inconsistentes e o MySQL recusa as leituras e escritas nela. Como praticamente todo o site depende dessa tabela, a corrupção faz o conteúdo sumir, impede salvar e costuma derrubar o site. O reparo reconstrói os índices e ponteiros internos da tabela, sem remover o conteúdo.
Como identificar
- No log do MySQL aparece “Table ‘./banco/wp_posts’ is marked as crashed and should be repaired”.
- Posts e páginas somem do site ou do painel, ou não salvam mesmo sem erro de conexão.
- O wp-admin mostra “One or more database tables are unavailable” apontando a tabela de posts.
- A corrupção surge após queda de energia, disco cheio ou reinício forçado do MySQL durante uma escrita.
Como prevenir
- Mantenha backups automáticos diários do banco, já que a tabela de posts guarda todo o conteúdo
- Use o engine InnoDB, mais resistente a corrupção após quedas do que o MyISAM
- Limite o número de revisões por post e monitore o espaço em disco do servidor
Causa
- MySQL/MariaDB encerrado abruptamente (queda de energia ou kill) no meio de uma escrita na tabela de posts.
- Disco do servidor cheio, impedindo o MySQL de gravar por completo os arquivos da tabela de posts.
- Tabela MyISAM com índice estourado, comum em sites antigos com muitas revisões acumuladas.
- Setor defeituoso no disco onde ficam os arquivos de dados da tabela de posts.
- Importação ou migração que copiou os arquivos da tabela de forma incompleta entre servidores.
Como resolver
- Faça backup do banco antes de tudo: exporte o banco pelo phpMyAdmin. A tabela de posts concentra todo o conteúdo, então o backup é obrigatório antes de qualquer reparo.
- Tente o reparo nativo do WordPress: via FTP, adicione a constante ao wp-config.php e abra a página de reparo:
define( 'WP_ALLOW_REPAIR', true ); // depois acesse seudominio.com/wp-admin/maint/repair.php - Repare direto no MySQL se preferir: no phpMyAdmin (aba SQL) ou via WP-CLI, rode o reparo sobre a tabela de posts apontada no erro. Em tabelas InnoDB, use a reconstrução do engine em vez de REPAIR.
- Remova a constante de reparo: apague a linha WP_ALLOW_REPAIR do wp-config.php assim que terminar, pois ela deixa a rota de reparo aberta sem login.
- Restaure de backup se o reparo falhar: se a tabela não reconstrói, importe a tabela de posts a partir do backup mais recente. Conteúdo perdido entre o backup e a falha precisa ser recriado.
-- Reparo da tabela de posts, via phpMyAdmin (aba SQL) ou cliente mysql
REPAIR TABLE wp_posts;
CHECK TABLE wp_posts;
-- REPAIR so cobre MyISAM. Em InnoDB, reconstrua o engine para forcar o reparo:
ALTER TABLE wp_posts ENGINE = InnoDB;
-- Opcional: limpar revisoes acumuladas que incham a tabela
DELETE FROM wp_posts WHERE post_type = 'revision';














