Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyelesaikan Ralat MySQL 1062: Entri Pendua '0' untuk Kunci 'PRIMER' Tanpa Kehilangan Data?

Bagaimana untuk Menyelesaikan Ralat MySQL 1062: Entri Pendua '0' untuk Kunci 'PRIMER' Tanpa Kehilangan Data?

Linda Hamilton
Linda Hamiltonasal
2025-01-04 13:59:41646semak imbas

How to Solve MySQL Error 1062: Duplicate Entry '0' for Key 'PRIMARY' Without Data Loss?

Ralat MySQL 1062: Mencipta Penyelesaian Tanpa Kehilangan Data

Dalam bidang MySQL, anda menghadapi ralat 1062: "Entri pendua '0 ' untuk kunci 'PRIMER'". Ini timbul apabila cuba menukar kunci utama jadual sambil mengekalkan hubungan kunci asing dan integriti data. Untuk menyelidiki perkara ini, mari kita periksa kes yang dibentangkan.

Pertanyaan yang disediakan bertujuan untuk mengubah taburan momento_jadual dengan menambahkan lajur id baharu sebagai kunci utama sambil mengekalkan perhubungan sedia ada. Walau bagaimanapun, pertanyaan gagal kerana entri pendua dalam kunci utama baharu.

Analisis mendedahkan bahawa lajur id yang baru dibuat mengandungi nilai '0' di seluruh barisnya. Oleh kerana kunci utama mesti mengandungi nilai unik, pertindihan ini menjadi penghalang. Untuk mengatasinya, kita perlu mengkonfigurasi lajur id sebagai kenaikan automatik, memastikan penjanaan nilai unik secara automatik.

Pertanyaan Semakan untuk Pelaksanaan Lancar:

< pra>
BUAT JADUAL 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 (`momento_id`, `momento_idmember`),
 KEY `momento_distribution_FI_2` (`momento_idmember`),
 KEY `accepted` (`accepted`, `ext_member`)

)
ENGINE=InnoDB
KARSET LALAI=latin1;

Sebagai alternatif, jika anda sudah mempunyai lajur id dengan nilai , cuba ini:


UBAH JADUAL momento_distribution
TUKAR id COLUMN id INT(11) BUKAN NULL AUTO_INNCREMENT,
GUGURKAN KUNCI PRIMER,
TAMBAH KUNCI UTAMA (id);

Dengan pengubahsuaian ini, MySQL akan secara automatik memberikan nilai unik kepada kunci utama baharu, menyelesaikan isu penduaan. Struktur jadual anda akan dilaraskan dengan sewajarnya, melindungi data anda dan memastikan integriti pangkalan data anda.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat MySQL 1062: Entri Pendua '0' untuk Kunci 'PRIMER' Tanpa Kehilangan Data?. 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