À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:

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

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
- Faz Backup de toda a base de dados e transfere-a.
- 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
- Abre o phpmyadmin ou adminer e navega até à tabela wp_options.
- Clica em “alter indexes” como neste screenshot:

- Depois define “option_id” como chave primária:

- 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:

- 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.