Como corrigir o loop Update WordPress Database
O que é o loop Update WordPress Database?
Depois de atualizar o core, o WordPress compara a versão do banco armazenada na opção db_version com a versão que o código espera. Quando elas diferem, ele mostra a tela ‘O WordPress precisa atualizar seu banco de dados’ e roda a rotina wp_upgrade ao clicar no botão. No loop, essa rotina termina mas a nova versão não é gravada (ou a tela vem do cache), então o WordPress acha que ainda precisa atualizar e mostra a tela de novo, a cada visita, prendendo o site nesse passo.
Como identificar
- A tela “O WordPress precisa atualizar seu banco de dados” reaparece toda vez, mesmo após clicar em “Atualizar banco de dados do WordPress”.
- Em inglês, a mensagem “Update WordPress Database” volta em loop a cada acesso ao site ou ao painel.
- Após clicar e ver “Atualização concluída”, a tela de atualização volta no próximo carregamento.
- O loop começou logo depois de uma atualização do core do WordPress ou de uma migração de servidor.
Antes de começar: Antes de editar a opção db_version no phpMyAdmin, exporte um backup da tabela wp_options. Gravar um número de versão errado pode disparar rotinas de upgrade indevidas ou deixar o site preso numa versão de banco incompatível.
Como prevenir
- Antes de atualizar o core, limpe o cache de página e o do CDN para a tela de upgrade não ser cacheada
- Em sites com Redis ou Memcached, esvazie o object cache logo após cada atualização do WordPress
- Após migrar de servidor, confirme que a db_version do banco bate com a versão do core instalado
Causa
- Plugin de cache de página ou CDN servindo a versão em cache da tela de atualização, que nunca reflete o banco já atualizado.
- Object cache persistente (Redis ou Memcached) com a opção db_version antiga em memória, ignorando o valor já gravado no banco.
- Opção db_version na tabela wp_options não sendo atualizada por permissão de escrita insuficiente no banco.
- Migração que trouxe um banco com db_version diferente da versão do core instalado no novo servidor.
- Tabela wp_options corrompida, impedindo a gravação do novo número de versão ao fim da rotina de upgrade.
Como resolver
- Limpe todos os caches: limpe o cache do plugin de cache, o cache do CDN (como Cloudflare) e o cache do navegador. Como a tela de atualização costuma ser cacheada, isso sozinho resolve boa parte dos loops.
- Esvazie o object cache, se houver: se o site usa Redis ou Memcached, esvazie o object cache. A opção db_version pode estar presa em memória com o valor antigo, mesmo já atualizada no banco.
- Force a rotina de atualização pela URL: acesse diretamente seudominio.com/wp-admin/upgrade.php?step=1 no navegador. Essa URL dispara a rotina de upgrade do core sem depender da tela em cache.
- Confira a db_version no banco: no phpMyAdmin, abra a tabela wp_options e localize a linha option_name = 'db_version'. Compare o valor com o esperado pela sua versão do WordPress e ajuste se estiver claramente defasado.
- Desative o cache temporariamente: se o loop persistir, adicione no wp-config.php a constante que desliga o cache (veja o bloco de código), complete a atualização e só depois reative o cache.
PHP
// wp-config.php - desliga o cache temporariamente para quebrar o loop.
// Coloque ANTES da linha "That's all, stop editing!".
define( 'WP_CACHE', false );
// Se usa object cache persistente (Redis/Memcached) e o problema continua,
// desative o plugin de object cache removendo o arquivo:
// wp-content/object-cache.php
// depois acesse wp-admin/upgrade.php?step=1 e reative o cache no fim.
Perguntas frequentes
O que é a tela Update WordPress Database?
É a tela que o WordPress mostra quando a versão do banco gravada na opção db_version difere da versão que o código instalado espera. Ela roda a rotina que ajusta a estrutura do banco para a nova versão. Normalmente aparece uma vez após atualizar o core.
Por que a tela volta mesmo depois de eu clicar no botão?
Porque, no loop, ou a tela vem do cache (e não reflete o banco já atualizado), ou a nova db_version não é gravada por causa de object cache em memória ou permissão de escrita. O WordPress continua achando que precisa atualizar e mostra a tela de novo.
Limpar o cache realmente resolve o loop?
Na maioria dos casos sim. A tela de atualização costuma ser cacheada pelo plugin de cache ou pelo CDN, então você vê uma cópia antiga mesmo após o banco já estar atualizado. Limpar todos os caches faz o site voltar a servir a página correta.
Para que serve a URL upgrade.php?step=1?
Ela dispara diretamente a rotina de atualização do banco do core, sem passar pela tela que pode estar em cache. Acessar seudominio.com/wp-admin/upgrade.php?step=1 força o processo a rodar de novo de forma limpa e costuma concluir a atualização travada.
Onde fica a versão do banco no WordPress?
Na tabela wp_options, na linha em que option_name é 'db_version'. O número ali precisa corresponder à versão esperada pela sua instalação do WordPress. Se ele estiver defasado e não atualizar sozinho, é o que mantém o site preso na tela de atualização.
Posso editar a db_version direto no banco?
Pode, com cuidado e backup antes. No phpMyAdmin, ajustar o valor de db_version na wp_options para o número correto pode quebrar o loop. Mas grave o número certo: um valor errado dispara rotinas de upgrade indevidas ou deixa o banco numa versão incompatível.














