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

Como corrigir erro de serialização após migração

Time Full Services Time Full Services
Tipo Migracao & Backup
Nome do erro Erro de serialização após migração EN: Serialization error after migration
Severidade Grave
Descrição O erro de serialização após migração do WordPress aparece quando widgets somem, as opções do tema voltam ao padrão e configurações de plugin se perdem. A causa quase sempre e um find-and-replace cru de URL no banco (via SQL ou editor de texto no dump), que quebra o tamanho declarado das strings serializadas armazenadas pelo WordPress.

O que é o erro de serialização após migração?

O WordPress guarda muitos dados em formato serializado: uma string PHP que carrega o tamanho de cada valor, como s:21:”https://exemplo.com/”. Quando uma migração troca a URL com find-and-replace cru, o texto muda mas o número do tamanho não, e o PHP não consegue mais ler aquela estrutura. O resultado e widgets, opções de tema e ajustes de plugin que somem ou voltam ao padrão.

Como identificar

  • Os widgets das áreas de widget desaparecem ou voltam vazios após a migração.
  • As opções do tema (cores, logo, layout) resetam para o padrão mesmo sem terem sido alteradas.
  • Configurações de plugins se perdem e algumas áreas do painel mostram aviso de dado corrompido.
  • No banco aparecem strings serializadas com tamanho errado, como a:1:{s:21:”…”} com contagem incorreta.
Antes de começar: Faca backup completo do banco antes de qualquer substituicao: a operacao altera milhares de linhas e e irreversivel sem copia. Nunca edite a URL serializada manualmente no dump nem rode UPDATE cru, pois e exatamente isso que gera a corrupcao.

Como prevenir

  • Sempre troque URLs com WP-CLI search-replace ou Better Search Replace, nunca com UPDATE de SQL ou edição do .sql
  • Use um plugin de migração que já faz a substituicao tratando dados serializados ao importar
  • Faca backup do banco antes e rode a substituicao em modo de teste para conferir o resultado

Causa

  • Find-and-replace cru de URL feito via SQL (UPDATE) sem tratar a serialização, quebrando o tamanho das strings.
  • Troca de domínio feita editando o arquivo .sql do dump em editor de texto antes de importar.
  • Diferenca de tamanho entre a URL antiga e a nova (http para https, com ou sem www) alterando a contagem de caracteres.
  • Plugin de busca e substituicao que não reconhece dados serializados usado na migração.
  • Caminho absoluto do servidor (ex.: /home/usuário-antigo/) substituido em massa sem recontar o serializado.

Como resolver

  1. Restaure o backup do banco: se você ainda tem o dump original (antes do replace cru), restaure-o para partir de dados serializados integros antes de refazer a troca da forma correta.
  2. Use uma ferramenta que trata serialização: refaca a substituicao de URL com WP-CLI search-replace ou o plugin Better Search Replace, que recontam o tamanho das strings serializadas automaticamente.
  3. Rode em modo de teste primeiro: execute o search-replace com --dry-run (WP-CLI) ou marque "executar como teste" no Better Search Replace para conferir o volume antes de gravar.
  4. Reconfigure o que já quebrou: para widgets e opções de tema já corrompidos por um replace cru anterior, reconstrua-os manualmente, pois o dado serializado pode estar perdido.
  5. Limpe o cache de objetos: limpe o cache (object cache e plugin de cache) para o WordPress reler as opções já corrigidas no banco.
BASH
# CERTO: search-replace que reconta o tamanho das strings serializadas
wp search-replace 'https://dominio-antigo.com' 'https://dominio-novo.com' --all-tables --report-changes-only

# Confira antes com --dry-run, sem gravar nada:
wp search-replace 'https://dominio-antigo.com' 'https://dominio-novo.com' --all-tables --dry-run

# ERRADO (NAO faca): UPDATE cru quebra a serializacao
# UPDATE wp_options SET option_value = REPLACE(option_value,'antigo','novo');

Perguntas frequentes

O que e um dado serializado no WordPress?
E uma string PHP que armazena estruturas (arrays, objetos) com o tamanho de cada valor embutido, como s:5:"valor". Widgets, opções de tema e configurações de plugin usam esse formato. Por isso a troca de URL precisa recontar o tamanho, ou o PHP não le mais o dado.
Por que o UPDATE de SQL quebra a serialização?
Porque o UPDATE troca o texto da URL mas não atualiza o número do tamanho gravado antes da string. Se a URL nova tem comprimento diferente, a contagem fica errada e o PHP descarta a estrutura inteira, fazendo widgets e opções sumirem ou resetarem.
Já fiz o replace cru e quebrou tudo. Tem volta?
A forma mais segura e restaurar o backup do banco anterior ao replace e refazer a troca com WP-CLI search-replace. Sem backup, o dado serializado corrompido geralmente esta perdido e os widgets e opções de tema afetados precisam ser reconfigurados manualmente.
Better Search Replace e seguro para serializados?
Sim. Tanto o Better Search Replace quanto o WP-CLI search-replace reconhecem dados serializados e recalculam o tamanho das strings ao substituir. Use a opção de teste antes de gravar para conferir quantas linhas serão alteradas e em quais tabelas.
Trocar http por https também pode quebrar?
Pode, se feito com replace cru: https tem um caractere a mais que http, mudando o comprimento da string serializada. Mesmo nessa troca aparentemente simples, use search-replace que reconta o tamanho, em vez de UPDATE ou edição do dump.
Preciso de SSH para corrigir a serialização?
Não obrigatoriamente. O WP-CLI via SSH e o caminho mais robusto, mas o plugin Better Search Replace faz a mesma substituicao tratando serialização pelo painel. Em ambos, faca backup do banco antes e rode primeiro em modo de teste.

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