Beim Ändern einer MySQL-Tabelle, um ihren Primärschlüssel zu ändern, kann der Fehlercode 1062 auftreten: „Doppelter Eintrag.“ „0“ für Schlüssel „PRIMÄR“. Dies tritt auf, wenn die neu festgelegte Primärschlüsselspalte Duplikate enthält Werte.
Ursache:
Das Problem tritt auf, weil die vorhandenen Tabellendaten möglicherweise doppelte Werte in der Spalte enthalten, die in den Primärschlüssel konvertiert wird. Die PRIMARY KEY-Einschränkung stellt sicher, dass alle Werte in der Spalte eindeutig sind. Beim Hinzufügen der PRIMARY KEY-Einschränkung prüft MySQL auf Duplikate und schlägt fehl, wenn diese vorhanden sind.
Lösung:
Um Datenverlust zu vermeiden und den Fehler zu beheben, führen Sie die folgenden Schritte aus:
1. Automatische Inkrementierung zur neuen Primärschlüsselspalte hinzufügen:
Stellen Sie sicher, dass die neue Primärschlüsselspalte die AUTO_INCREMENT-Eigenschaft hat:
CREATE TABLE `momento_distribution` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `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 (`id`, `momento_idmember`), KEY `momento_distribution_FI_2` (`momento_idmember`), KEY `accepted` (`accepted`, `ext_member`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Durch Zuweisen der AUTO_INCREMENT-Eigenschaft führt MySQL automatisch eine Generierung durch eindeutige Werte für die neue Primärschlüsselspalte, um potenzielle Duplikate zu vermeiden.
2. Ändern Sie die vorhandene Spalte:
Wenn Sie die neue Primärschlüsselspalte bereits ohne die Eigenschaft AUTO_INCREMENT erstellt haben, können Sie sie mit der folgenden Abfrage ändern:
ALTER TABLE `momento_distribution` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT, DROP PRIMARY KEY, ADD PRIMARY KEY (`id`);
Diese Abfrage wird Ändern Sie die vorhandene ID-Spalte so, dass sie über die Eigenschaft AUTO_INCREMENT verfügt, löschen Sie die alte Primärschlüsseleinschränkung und fügen Sie eine neue Primärschlüsseleinschränkung für die geänderte ID-Spalte hinzu.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich den MySQL-Fehler 1062: Doppelter Eintrag für einen neuen Primärschlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!