Rumah >pangkalan data >tutorial mysql >Ralat MySQL 1062: Bagaimana untuk Membetulkan Entri Kunci Utama Pendua 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:
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.
Jatuhkan Sekolah Rendah Lama Kunci:
Alih keluar kekangan kunci utama sedia ada:
ALTER TABLE `momento_distribution` DROP PRIMARY KEY;
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:
Buat Lajur AutoTambahan Baharu:
Tambah lajur baharu dengan autokenaikan didayakan:
ALTER TABLE `momento_distribution` ADD `new_id` INT(11) NOT NULL AUTO_INCREMENT;
Kemas Kini Sedia Ada Data:
Kemas kini baris sedia ada untuk mengisi lajur baharu:
UPDATE `momento_distribution` SET `new_id` = `momento_id`;
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!