Rumah >pangkalan data >tutorial mysql >Ralat MySQL 1062: Bagaimana untuk Membetulkan Entri Kunci Utama Pendua Tanpa Kehilangan Data?

Ralat MySQL 1062: Bagaimana untuk Membetulkan Entri Kunci Utama Pendua Tanpa Kehilangan Data?

Susan Sarandon
Susan Sarandonasal
2025-01-03 21:51:40700semak imbas

MySQL Error 1062: How to Fix Duplicate Primary Key Entries Without Data Loss?

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

Masalah:

Bila cuba mengubah suai kunci utama pada jadual MySQL dengan data dan hubungan sedia ada, ralat adalah dihadapi:

1062 - Duplicate entry '0' for key 'PRIMARY'

Isu timbul kerana lajur yang baru ditambah bertujuan sebagai kunci utama mengandungi nilai pendua (0), yang melanggar kekangan unik.

Punca Punca:

Ralat ini biasanya berlaku apabila anda mempunyai data sedia ada dengan perhubungan kunci asing yang merujuk kepada lajur yang diubah suai sebagai yang utama kunci. Jika nilai dalam kunci utama tidak unik, pangkalan data akan menolak perubahan.

Penyelesaian (Tanpa Kehilangan Data):

Untuk menyelesaikan isu ini tanpa kehilangan data , anda boleh mengikuti langkah berikut:

  1. Tetapkan Kunci Utama sebagai Penambahan Auto:

    Dalam takrifan jadual, tentukan lajur kunci utama baharu sebagai kenaikan automatik:

    `momento_id` INT(11) NOT NULL AUTO_INCREMENT,

    Ini akan menjana nilai unik untuk kunci utama baharu secara automatik.

  2. Jatuhkan Sekolah Rendah Lama Kunci:

    Alih keluar kekangan kunci utama sedia ada:

    ALTER TABLE `momento_distribution` DROP PRIMARY KEY;
  3. Tambah Kunci Utama Baharu:

    Tambahkan kekangan kunci utama baharu pada kenaikan automatik lajur:

    ALTER TABLE `momento_distribution` ADD PRIMARY KEY (`momento_id`);

Ini akan menetapkan nilai yang dijana secara automatik sebagai kunci utama yang unik tanpa menjejaskan data sedia ada.

Pendekatan Alternatif:

Jika lajur "momento_id" tidak perlu bermula dari 0, anda boleh mempertimbangkan alternatif pendekatan:

  1. Buat Lajur AutoTambahan Baharu:

    Tambah lajur baharu dengan autokenaikan didayakan:

    ALTER TABLE `momento_distribution` ADD `new_id` INT(11) NOT NULL AUTO_INCREMENT;
  2. Kemas Kini Sedia Ada Data:

    Kemas kini baris sedia ada untuk mengisi lajur baharu:

    UPDATE `momento_distribution` SET `new_id` = `momento_id`;
  3. Lepaskan Kunci Utama Lama dan Tambah Kunci Utama Baharu:

    Lepaskan kunci utama lama dan tambah kunci utama baharu pada kenaikan automatik lajur:

    ALTER TABLE `momento_distribution`
    DROP PRIMARY KEY,
    ADD PRIMARY KEY (`new_id`);

Pendekatan ini memberikan nilai autokenaikan unik kepada semua baris, memastikan kekangan kunci utama dipenuhi.

Atas ialah kandungan terperinci Ralat MySQL 1062: Bagaimana untuk Membetulkan Entri Kunci Utama Pendua 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