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

Como corrigir prefixo de tabela duplicado após migração

Time Full Services Time Full Services
Tipo Banco de dados
Nome do erro Prefixo de tabela duplicado após migração EN: Wrong database table prefix after migration
Severidade Atenção
Descrição O prefixo de tabela duplicado no WordPress acontece quando uma migração cria tabelas com um prefixo repetido, como wp_wp_, ou quando o $table_prefix do wp-config.php deixa de bater com o banco. O site perde acesso aos dados porque procura as tabelas com o nome errado, e até a wp_options e a wp_usermeta guardam o prefixo internamente.

O que é o prefixo de tabela errado no WordPress?

O problema de prefixo de tabela no WordPress surge quando o valor de $table_prefix no wp-config.php não corresponde mais ao prefixo real das tabelas no banco. Em migrações, algumas ferramentas duplicam o prefixo (gerando wp_wp_) ou trocam o prefixo padrão por outro sem atualizar o arquivo. Como o WordPress monta o nome de cada tabela com esse prefixo, qualquer descompasso faz o site procurar tabelas inexistentes. Pior: a wp_options e a wp_usermeta guardam o prefixo dentro de alguns nomes de opção e de chave (como wp_user_roles e wp_capabilities), então mudar só o nome das tabelas não basta.

Como identificar

  • O front mostra erro de banco ou o wp-admin retorna “Sorry, you are not allowed to access this page” após login.
  • No phpMyAdmin as tabelas aparecem com prefixo duplicado, como wp_wp_posts em vez de wp_posts.
  • Você perdeu o perfil de administrador: entra no painel mas sem permissões de admin.
  • O erro começou logo após uma migração ou um plugin de mudança de prefixo de tabela.
Antes de começar: Faça backup completo do banco antes de renomear tabelas ou editar a wp_options e a wp_usermeta. Um prefixo corrigido pela metade pode bloquear o acesso de administrador ao painel.

Como prevenir

  • Defina o prefixo de tabela uma única vez, no início do projeto, e evite trocá-lo depois
  • Use ferramentas de migração que preservam o prefixo original em vez de concatená-lo
  • Ao mudar o prefixo, atualize sempre as chaves internas na wp_options e na wp_usermeta junto com as tabelas

Causa

  • Ferramenta de migração que concatenou o prefixo duas vezes, criando nomes como wp_wp_posts.
  • Valor de $table_prefix no wp-config.php diferente do prefixo real das tabelas no banco.
  • Mudança de prefixo nas tabelas sem atualizar as chaves internas na wp_options e na wp_usermeta.
  • Importação que renomeou as tabelas mas manteve o wp-config.php apontando para o prefixo antigo.
  • Plugin de segurança que trocou o prefixo pela metade, deixando tabelas e config dessincronizados.

Como resolver

  1. Identifique o prefixo real das tabelas: no phpMyAdmin, abra o banco e observe o prefixo que se repete no início das tabelas. Se vir wp_wp_, o prefixo foi duplicado; se vir um prefixo custom, anote-o para usar no wp-config.
  2. Ajuste o $table_prefix no wp-config.php: via FTP, edite o wp-config.php e defina $table_prefix com o prefixo exato visto no banco, incluindo o sublinhado final. Esse é o caminho mais simples quando você só quer voltar a apontar para as tabelas existentes.
  3. Renomeie as tabelas se o prefixo estiver duplicado: se preferir limpar o prefixo wp_wp_ de volta para wp_, renomeie cada tabela no phpMyAdmin ou via SQL. Esse caminho exige também ajustar as chaves internas no passo seguinte.
  4. Corrija as chaves na wp_options e na wp_usermeta: atualize as opções e metas que carregam o prefixo no nome, como user_roles na wp_options e capabilities e user_level na wp_usermeta. Sem isso, você perde o acesso de administrador mesmo com as tabelas certas.
  5. Teste o login e as permissões: limpe o cache, faça login e confirme que o perfil de administrador voltou com todas as permissões. Se ainda faltar acesso, revise se alguma chave com o prefixo antigo ficou para trás na wp_usermeta.
SQL
-- Caso o prefixo tenha duplicado (wp_wp_), renomeie de volta para wp_
RENAME TABLE wp_wp_posts TO wp_posts;
RENAME TABLE wp_wp_options TO wp_options;
-- (repita o RENAME para todas as tabelas wp_wp_*)

-- Corrija as chaves internas que carregam o prefixo no nome
UPDATE wp_options SET option_name = 'wp_user_roles' WHERE option_name = 'wp_wp_user_roles';
UPDATE wp_usermeta SET meta_key = 'wp_capabilities' WHERE meta_key = 'wp_wp_capabilities';
UPDATE wp_usermeta SET meta_key = 'wp_user_level' WHERE meta_key = 'wp_wp_user_level';

Perguntas frequentes

Por que o prefixo das tabelas duplicou após a migração?
Algumas ferramentas de migração concatenam o prefixo configurado com o prefixo já presente nas tabelas, gerando nomes como wp_wp_posts. O WordPress passa a procurar tabelas com o prefixo do wp-config, que não casa mais com os nomes duplicados no banco.
Posso só ajustar o $table_prefix no wp-config e resolver?
Se você quer apenas voltar a apontar para as tabelas existentes, ajustar o $table_prefix costuma bastar. Mas se decidir renomear as tabelas para limpar o prefixo, precisa também corrigir as chaves internas na wp_options e na wp_usermeta.
Por que perdi as permissões de administrador após mudar o prefixo?
Porque a wp_options e a wp_usermeta guardam o prefixo dentro de chaves como user_roles e capabilities. Se você renomeou as tabelas mas não atualizou essas chaves, o WordPress não reconhece o seu papel de administrador e o acesso fica limitado.
Quais chaves internas precisam ser atualizadas?
Na wp_options, a opção user_roles leva o prefixo no nome. Na wp_usermeta, as chaves capabilities e user_level também. Ao trocar o prefixo das tabelas, essas três precisam ser renomeadas para o novo prefixo, senão você perde permissões.
É mais seguro renomear as tabelas ou ajustar o wp-config?
Ajustar o $table_prefix no wp-config é o caminho mais simples e com menos risco, pois não mexe no banco. Renomear as tabelas só vale a pena se você quer um prefixo limpo, e exige cuidado extra com as chaves internas e um backup antes.
Mudar o prefixo de tabela melhora a segurança do site?
Um prefixo diferente do padrão wp_ dificulta um pouco ataques automatizados que assumem nomes de tabela fixos, mas é uma camada fraca. Vale mais investir em senhas fortes, atualizações e um firewall do que confiar a segurança ao prefixo.

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