Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat Ralat MySQL 1022 (Kunci Pendua) Semasa Mencipta Jadual?

Mengapa Saya Mendapat Ralat MySQL 1022 (Kunci Pendua) Semasa Mencipta Jadual?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-30 17:00:12262semak imbas

Why Am I Getting a MySQL Error 1022 (Duplicate Key) When Creating a Table?

Tidak Boleh Menulis; Kunci Pendua Semasa Mencipta Jadual

Anda menghadapi Ralat 1022 semasa cuba mencipta jadual baharu disebabkan oleh entri kunci utama pendua. Walaupun selepas menyemak pertanyaan, anda mungkin menghadapi kesukaran untuk mengenal pasti sumber pendua. Mari kita siasat lebih lanjut.

Pertanyaan yang anda berikan mengandungi kekangan bernama "iduser" sebagai kunci asing untuk lajur "userId". Selain itu, ia menentukan kekangan bernama "idcategory" untuk lajur "circleId". Nama kekangan ini nampaknya menjadi punca kepada isu.

Kekangan dan Penduaan

Kekangan dalam MySQL mestilah unik merentas seluruh pangkalan data, bukan hanya untuk jadual tertentu sedang dicipta atau diubah suai. Oleh itu, ada kemungkinan anda sudah mempunyai jadual atau indeks lain dalam pangkalan data anda yang menggunakan nama kekangan "iduser" atau "idcategory". Konflik ini membawa kepada ralat kunci pendua.

Mengenal pasti Kekangan Pendua

Untuk menentukan tempat kekangan ini sedang digunakan, laksanakan pertanyaan berikut:

SELECT `TABLE_SCHEMA`, `TABLE_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_NAME` IN ('iduser', 'idcategory');

Pertanyaan ini akan memaparkan jadual dan skema di mana "iduser" dan "idcategory" kekangan dirujuk.

Penyelesaian

Untuk menyelesaikan ralat, anda perlu menamakan semula kekangan pendua. Pertimbangkan untuk menggunakan nama unik yang khusus untuk jadual semasa, seperti "fk_user" untuk kekangan kunci asing pada lajur "userId". Setelah kekangan dinamakan semula dan pertanyaan dikemas kini, anda sepatutnya berjaya mencipta jadual tanpa ralat kunci pendua.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat MySQL 1022 (Kunci Pendua) Semasa Mencipta Jadual?. 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