🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir One or more database tables are unavailable

Time Full Services Time Full Services
Tipo Banco de dados
Nome do erro One or more database tables are unavailable EN: One or more database tables are unavailable
Severidade Crítico
Descrição "One or more database tables are unavailable" significa que o MySQL marcou uma ou mais tabelas do WordPress como corrompidas e parou de respondê-las. O site fica fora do ar ou perde conteúdo até a tabela ser reparada.

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.
Antes de começar: Exporte o banco antes de reparar e remova a constante WP_ALLOW_REPAIR imediatamente após terminar: enquanto ela existe, qualquer visitante consegue abrir /wp-admin/maint/repair.php sem login.

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

  1. 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.
  2. 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 );
  3. 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.
  4. 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.
  5. 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.
SQL
-- 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;

Perguntas frequentes

Esse aviso é o mesmo que o erro de conexão com o banco?
Não. No erro de conexão o WordPress nem fala com o MySQL. Aqui a conexão funciona, mas o servidor recusa uma tabela específica porque ela está marcada como crashed e precisa ser reparada.
O reparo apaga o conteúdo da tabela?
Não. O reparo reconstrói índices e ponteiros internos sem remover posts ou opções. Mesmo assim, exporte o banco antes: qualquer operação sobre uma tabela corrompida tem algum risco.
Como sei qual tabela está indisponível?
A própria tela /wp-admin/maint/repair.php lista as tabelas afetadas, e o log do MySQL nomeia a tabela, por exemplo "Table './banco/wp_posts' is marked as crashed".
Reparei pelo WordPress mas a tabela continua indisponível. E agora?
O reparo do WordPress só cobre MyISAM. Se a tabela for InnoDB, use ALTER TABLE nome ENGINE=InnoDB no phpMyAdmin ou restaure a tabela a partir de um backup.
Posso reparar sem mexer no wp-config.php?
Sim. Com acesso SSH, o comando "wp db repair" do WP-CLI repara todas as tabelas sem precisar da constante WP_ALLOW_REPAIR nem abrir nenhuma rota no navegador.
As tabelas voltam a ficar indisponíveis depois do reparo. Por quê?
Corrupção recorrente indica causa de fundo: disco cheio, falha de hardware ou MySQL encerrado à força. Verifique o espaço em disco e a saúde do disco com o suporte da hospedagem, senão o problema retorna.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes