Come risolvere una chiave primaria mancante nella tabella WordPress wp_options

A volte, in determinate circostanze, wp_options (o qualsiasi altra tabella) può perdere il suo indice di chiave primaria.

Il motivo esatto di questo problema non è chiaro al 100%. Sembra che questo possa accadere se il database è stato migrato manualmente da un database all’altro o usando un Plugin o uno strumento che non copriva tutte le configurazioni, come l’uso di versioni MySQL diverse o tipi come InnoDB o MyISAM.

Per essere chiari: WP STAGING non è la causa di questo errore. Ti aiutiamo solo a rilevare quell’errore mostrando un avviso evidente nella tua dashboard admin quando questo accade:

Lo facciamo perché quell’errore è critico e molto insidioso. Non te ne accorgerai finché non sarà troppo tardi per risolverlo rapidamente. Più aspetti a risolverlo, più diventa difficile.

Questo perché il tuo sito si comporterà quasi come prima e funzionerà diversamente solo sotto il cofano.

Lascia che ti faccia un esempio rapido del perché questo è importante per la tabella wp_options:

La tabella wp_options ha una colonna chiamata option_id. Questo ID è solitamente univoco e può essere assegnato solo una volta a una riga. L’ID viene incrementato automaticamente per ogni riga in questo modo:

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

Se la chiave primaria manca, l’option_id non viene più incrementato e tutte le nuove righe otterranno option_id numero 0 come questo:

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

Il problema appare quando provi a esportare e importare queste righe in un altro database. L’option_id deve essere un numero univoco, quindi mostrerà errori di insert SQL come “Can not insert duplicate key … ” e fermerà la migrazione.

Di conseguenza, WP STAGING e qualsiasi altro Plugin di migrazione non possono eseguire il trasferimento dei dati del database su un altro database. Ad esempio, il processo di push dal sito di staging al sito di produzione fallirà.

Questo screenshot mostra una normale tabella wp_options con una chiave primaria impostata sulla colonna option_id:

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

Questo secondo screenshot mostra la tabella wp_options con una chiave primaria mancante:

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

Nota: in questo tutorial avrai bisogno di uno strumento di gestione del database, ad esempio “adminer” o phpMyAdmin.

Rinominare gli option_id esistenti

  1. Fai il Backup dell’intero database e scaricalo.
  2. Modifica i valori option_id per tutti gli ID duplicati.
    Ti suggerisco di ottenere il numero più alto che hai nella colonna option_id e di incrementarlo uno per uno. Questo screencast mostra come puoi farlo:

Aggiungere l’indice della chiave primaria e modificare la tabella

  1. Apri phpMyAdmin o adminer e vai alla tabella wp_options.
  2. Clicca su “alter indexes” come in questo screenshot:
  3. Poi imposta “option_id” come chiave primaria:
  4. Se ricevi l’errore “Duplicate entry ‘0’ for key PRIMARY”, significa che hai ancora ID duplicati nella tabella e non li hai modificati tutti:
  5. Se è così, trova i restanti e incrementa i loro valori in modo che non ci siano più duplicati nella tabella. Dopo, puoi ripetere per aggiungere la PRIMARY KEY alla tabella.

Dopo aver risolto la chiave primaria mancante, sei pronto per pubblicare il sito di staging sul sito live; tuttavia, è consigliato fare il Backup del database.

Updated on Maggio 23, 2026

Alaa Salama

Autore: Alaa Salama

Lavoro nel campo del supporto da oltre dieci anni perché apprezzo davvero il lato umano della tecnologia. Che si tratti di risolvere un problema complesso di WordPress o di sviluppare plugin personalizzati e snippet di codice per semplificare i flussi di lavoro, il mio obiettivo è sempre ridurre gli attriti e aiutare le persone a lavorare in modo più intelligente. Per me non c’è nulla di più gratificante che vedere una soluzione che ho creato migliorare la giornata di qualcun altro.

Quando sono offline, di solito sono comunque “con le mani nel motore” di qualcosa. Sono appassionato di ottimizzazione dei server e di elettronica fai-da-te, e spesso trascorro il mio tempo libero su progetti di smart home e riparazioni hardware. Apprezzo in modo particolare il tempo passato nel mio laboratorio di casa con i miei figli. Insieme affrontiamo di tutto, dalle riparazioni domestiche ai progetti creativi, coltivando il piacere di costruire cose destinate a durare.