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!