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

Mengapa Saya Mendapat Ralat Kunci Pendua Semasa Mencipta Jadual MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-29 02:14:08484semak imbas

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

Ralat Kunci Pendua dalam Perintah CREATE TABLE

S1. Ralat 1022: Tidak boleh menulis; kunci pendua dalam jadual

Saya mengalami ralat 1022 semasa melaksanakan arahan CREATE TABLE disebabkan oleh kunci pendua. Saya telah menyemak pertanyaan, tetapi saya tidak dapat mengenal pasti puncanya.

Pertanyaan:

CREATE TABLE IF NOT EXISTS  `apptwo`.`usercircle` (
 `idUserCircle` MEDIUMINT NOT NULL ,
 `userId` MEDIUMINT NULL ,
 `circleId` MEDIUMINT NULL ,
 `authUser` BINARY NULL ,
 `authOwner` BINARY NULL ,
 `startDate` DATETIME NULL ,
 `endDate` DATETIME NULL ,
 PRIMARY KEY (  `idUserCircle` ) ,
 INDEX  `iduser_idx` (  `userId` ASC ) ,
 INDEX  `idcategory_idx` (  `circleId` ASC ) ,
 CONSTRAINT  `iduser` FOREIGN KEY (  `userId` ) REFERENCES  `apptwo`.`user` (
`idUser`
) ON DELETE NO ACTION ON UPDATE NO ACTION ,
 CONSTRAINT  `idcategory` FOREIGN KEY (  `circleId` ) REFERENCES  `apptwo`.`circle` (
`idCircle`
) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE = INNODB;

S2. Di manakah pertindihan berlaku?

A1. Konflik Nama Kekangan

Ralat mungkin berpunca daripada nama kekangan pendua. Kekangan mestilah unik merentas keseluruhan pangkalan data, bukan hanya dalam jadual tertentu.

Dalam kes ini, nampaknya sudah ada kekangan yang dinamakan iduser dan/atau idcategory dalam pangkalan data. Menamakan semula kekangan ini akan menyelesaikan isu ini.

S3. Bagaimanakah saya boleh mengenal pasti kekangan sedia ada?

A2. Pertanyaan untuk Mengesan Kekangan

Untuk mengenal pasti tempat kekangan 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 mengembalikan nama skema dan jadual di mana kekangan digunakan .

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