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
Lepaskan: 2024-11-29 02:14:08
asal
450 orang telah melayarinya

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;
Salin selepas log masuk

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');
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan