Como corrigir uma chave primária em falta na tabela WordPress wp_options

Às vezes, em determinadas circunstâncias, a wp_options (ou qualquer outra tabela) pode perder o seu índice de chave primária.

A razão exata para esse problema não está 100% clara. Parece que isto pode acontecer se a base de dados tiver sido migrada manualmente de uma para outra, ou pelo uso de um Plugin ou ferramenta que não cobriu todas as combinações, como o uso de diferentes versões MySQL ou tipos como InnoDB ou MyISAM.

Para que fique claro: o WP STAGING não é a causa deste erro. Apenas te ajudamos a deteta-lo mostrando um aviso destacado no teu painel admin quando isto acontece:

Fazemos isto porque este erro é crítico e muito traiçoeiro. Não vais notá-lo até ser tarde demais para o resolver rapidamente. Quanto mais esperas para o corrigir, mais difícil se torna.

Isso porque o teu site vai comportar-se quase como antes e só vai funcionar de forma diferente nos bastidores.

Deixa-me dar-te um exemplo rápido de porque isto é importante para a tabela wp_options:

A tabela wp_options tem uma coluna chamada option_id. Este ID é normalmente único e só pode ser atribuído uma vez a uma linha. O ID é incrementado automaticamente para cada linha assim:

option_id | option_name
1                     |  option1
2                     | option2
3                     | option3

Se a chave primária estiver em falta, o option_id deixa de ser incrementado e todas as novas linhas vão receber o número 0 no option_id, assim:

option_id | option_name
1                     |  option1
2                     | option2
3                     | option3
0                     | option4
0                     | option5
0                     | option6

O problema aparece quando tentas exportar e importar estas linhas para outra base de dados. O option_id tem de ser um número único, por isso vai mostrar erros de inserção SQL como “Can not insert duplicate key …” e parar a migração.

Como resultado, o WP STAGING e qualquer outro Plugin de migração não conseguem executar a transferência de dados da base de dados para outra base de dados. Por exemplo, o processo de push do site de Staging para o site em produção vai falhar.

Este screenshot mostra uma tabela wp_options normal, com chave primária definida na coluna option_id:

Find out if the primary key index is missing in WordPress database table wp_options. Image with index

Este segundo screenshot mostra a tabela wp_options com a chave primária em falta:

Find out if the table has a missing primary key index. Image with index missing

Nota: Vais precisar de uma ferramenta de gestão de base de dados neste tutorial, por exemplo “adminer” ou PHPMyAdmin.

Renomear option_id’s existentes

  1. Faz Backup de toda a base de dados e transfere-a.
  2. Modifica os valores option_id para todos os IDs duplicados.
    Sugiro pegares no maior número que tens na coluna option_id e ires incrementando um a um. Este screencast mostra como podes fazer isto:

Adicionar índice de chave primária e alterar a tabela

  1. Abre o phpmyadmin ou adminer e navega até à tabela wp_options.
  2. Clica em “alter indexes” como neste screenshot:
  3. Depois define “option_id” como chave primária:
  4. Se receberes o erro “Duplicate entry ‘0’ for key PRIMARY”, significa que ainda tens IDs duplicados na tabela e que não os alteraste todos:
  5. Se for esse o caso, encontra os que faltam e incrementa os seus valores para que não haja mais duplicados na tabela. Depois disso, podes repetir o processo para adicionar a PRIMARY KEY à tabela.

Depois de corrigir a chave primária em falta, estás pronto para fazer push do site de Staging para o site em produção; no entanto, recomenda-se fazer Backup da base de dados.

Updated on May 23, 2026

Alaa Salama

Autor: Alaa Salama

Trabalho na área de suporte há mais de uma década porque realmente gosto do lado humano da tecnologia. Seja resolvendo um problema complexo no WordPress ou desenvolvendo plugins personalizados e trechos de código para simplificar fluxos de trabalho, meu objetivo é sempre reduzir atritos e ajudar as pessoas a trabalhar de forma mais inteligente. Para mim, não há nada mais gratificante do que ver uma solução que criei melhorar o dia de outra pessoa.

Quando estou offline, geralmente ainda estou “por baixo do capô” de alguma coisa. Sou apaixonado por otimização de servidores e eletrônica DIY, e muitas vezes passo meu tempo livre em projetos de casa inteligente e reparos de hardware. Valorizo especialmente o tempo que passo na minha oficina em casa com meus filhos. Juntos, fazemos de tudo, desde consertos domésticos até projetos criativos, cultivando o prazer de construir coisas feitas para durar.