Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich MySQL-Fehler 1062: Doppelter Eintrag „0' für Schlüssel „PRIMARY', wenn ich meine Tabelle ändere?

Warum erhalte ich MySQL-Fehler 1062: Doppelter Eintrag „0' für Schlüssel „PRIMARY', wenn ich meine Tabelle ändere?

Susan Sarandon
Freigeben: 2025-01-01 00:42:10
Original
842 Leute haben es durchsucht

Why am I getting MySQL Error 1062: Duplicate entry '0' for key 'PRIMARY' when altering my table?

MySQL-Fehler 1062: Primärschlüsselduplikation „0“

Beim Ändern der Momento_Distribution-Tabelle ist ein Problem aufgetreten und Sie erhalten die Fehlermeldung „ 1062 – Doppelter Eintrag „0“ für Schlüssel „PRIMARY“. Dies könnte auf ein Problem mit den Daten in der Tabelle hinweisen.

Der Primärschlüssel, wie in Ihrer ursprünglichen Tabellenstruktur definiert, war eine Kombination aus den Spalten momento_id und momento_idmember. Nachdem Sie jedoch eine neue ID-Spalte hinzugefügt und als Primärschlüssel festgelegt haben, sind Sie auf Duplikate in dieser Spalte gestoßen, insbesondere auf den Wert „0“.

Um dieses Problem zu beheben, können Sie versuchen, die ID-Spalte anzugeben als automatische Inkrementierung in der Tabellendefinition, wie unten gezeigt:

CREATE TABLE `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,
     `id`               INT(11) NOT NULL AUTO_INCREMENT,
     PRIMARY KEY (`id`),  -- New primary key
     KEY `momento_distribution_FI_2` (`momento_idmember`),
     KEY `accepted` (`accepted`, `ext_member`)
  )
ENGINE=InnoDB
DEFAULT CHARSET=latin1;
Nach dem Login kopieren

Alternativ können Sie, wenn Sie die ID-Spalte bereits erstellt haben, sie mithilfe von auf automatische Inkrementierung ändern Folgende Abfrage:

ALTER TABLE `momento_distribution`
  CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT,
  DROP PRIMARY KEY,
  ADD PRIMARY KEY (`id`);  -- New primary key
Nach dem Login kopieren

Durch die Angabe der ID-Spalte als automatische Inkrementierung stellen Sie sicher, dass jede Zeile einen eindeutigen Wert für diese Spalte hat, wodurch das Problem der doppelten „0“ vermieden wird. Dadurch können Sie die Tabellenstruktur ändern und die ID-Spalte als Primärschlüssel zuweisen, ohne Daten zu verlieren.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich MySQL-Fehler 1062: Doppelter Eintrag „0' für Schlüssel „PRIMARY', wenn ich meine Tabelle ändere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage