Rumah >pangkalan data >tutorial mysql >Mengapa saya mendapat Ralat MySQL 1062: Entri pendua '0' untuk kunci 'PRIMER' apabila mengubah jadual saya?

Mengapa saya mendapat Ralat MySQL 1062: Entri pendua '0' untuk kunci 'PRIMER' apabila mengubah jadual saya?

Susan Sarandon
Susan Sarandonasal
2025-01-01 00:42:10844semak imbas

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

MySQL Error 1062: Primary Key Duplication '0'

Anda telah menghadapi masalah semasa mengubah jadual momento_distribution, menerima ralat " 1062 - Entri pendua '0' untuk kunci 'PRIMER'". Ini mungkin menunjukkan masalah dengan data dalam jadual.

Kunci utama, seperti yang ditakrifkan dalam struktur jadual asal anda, ialah gabungan lajur momento_id dan momento_idmember. Walau bagaimanapun, selepas menambah lajur id baharu dan menetapkannya sebagai kunci utama, anda telah menemui pendua dalam lajur ini, khususnya nilai '0'.

Untuk menyelesaikan isu ini, anda boleh cuba menentukan lajur id sebagai kenaikan automatik dalam definisi jadual, seperti yang dilihat di bawah:

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;

Sebagai alternatif, jika anda telah mencipta lajur id, anda boleh mengubah suainya kepada autokenaikan menggunakan pertanyaan berikut:

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

Dengan menentukan lajur id sebagai autokenaikan, anda memastikan bahawa setiap baris mempunyai nilai unik untuk lajur ini, menghapuskan isu '0' pendua. Ini akan membolehkan anda mengubah struktur jadual dan menetapkan lajur id sebagai kunci utama tanpa kehilangan data.

Atas ialah kandungan terperinci Mengapa saya mendapat Ralat MySQL 1062: Entri pendua '0' untuk kunci 'PRIMER' apabila mengubah jadual saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn