MySQL 1062 – Duplica la voce ‘0’ per la chiave ‘PRIMARY’

Ho la seguente tabella in MySQL versione 5.5.24

DROP TABLE IF EXISTS `momento_distribution`; CREATE TABLE IF NOT EXISTS `momento_distribution` ( `momento_id` INT(11) NOT NULL, `momento_idmember` INT(11) NOT NULL, `created_at` DATETIME DEFAULT NULL, `updated_at` DATETIME DEFAULT NULL, `unread` TINYINT(1) DEFAULT '1', `accepted` VARCHAR(10) NOT NULL DEFAULT 'pending', `ext_member` VARCHAR(255) DEFAULT NULL, PRIMARY KEY (`momento_id`, `momento_idmember`), KEY `momento_distribution_FI_2` (`momento_idmember`), KEY `accepted` (`accepted`, `ext_member`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Ha molti dati con relazioni molti-a-uno con altre due tabelle con ondelete=restrict e onupdate=restrict .

Ora, ho bisogno di cambiare la struttura e introdurre la chiave primaria separata nella tabella, pur mantenendo le relazioni e i dati esistenti. Per questo, ho eseguito la seguente query:

 ALTER TABLE `momento_distribution` ADD `id` INT( 11 ) NOT NULL FIRST; ALTER TABLE `momento_distribution` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` ); 

Sfortunatamente, la mia seconda query non è riuscita con il seguente errore:

1062 – Duplica la voce ‘0’ per la chiave ‘PRIMARY’

    Qualcuno può indicare il problema? Immagino che il problema sia la relazione esistente, ma non voglio perdere la relazione oi dati esistenti, che ha diverse migliaia di righe. C’è un modo per farlo senza perdere i dati?

    EDIT: visualizzando i dati, ho capito che la colonna appena creata ha il valore ‘0’ in essa. Probabilmente questo non permette di cambiare la chiave primaria a causa di record duplicati (nella nuova chiave primaria)

    Ho più di 8.000 file, quindi non posso cambiarlo manualmente. C’è un modo per assegnare un rowid ad una nuova chiave primaria?