gpt4 book ai didi

mysql - SQL : ERROR 1005: Can't create table 'obl2.itemsubjects' (errno: 121)

转载 作者:可可西里 更新时间:2023-11-01 07:06:25 24 4
gpt4 key购买 nike

我有以下表格:

CREATE  TABLE `OBL2`.`item` (
`itemID` INT NOT NULL AUTO_INCREMENT ,
`itemName` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`itemID`) ,
INDEX `itemName` (`itemName` ASC) );

CREATE TABLE `OBL2`.`subject` (
`subjectID` INT NOT NULL ,
`subjectName` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`subjectID`) );

现在由于连接是多对多的,每个项目可以有很多主题,每个主题可以与很多项目相关 - 我想设置一个连接表。这是我的代码:

CREATE  TABLE `OBL2`.`itemsubjects` (
`itemID` INT NOT NULL ,
`subjectID` INT NOT NULL ,
PRIMARY KEY (`itemID`, `subjectID`) ,
INDEX `itemID_idx` (`itemID` ASC) ,
INDEX `subjectID_idx` (`subjectID` ASC) ,
CONSTRAINT `itemID`
FOREIGN KEY (`itemID` )
REFERENCES `OBL2`.`item` (`itemID` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `subjectID`
FOREIGN KEY (`subjectID` )
REFERENCES `OBL2`.`subject` (`subjectID` )
ON DELETE CASCADE
ON UPDATE CASCADE);

但由于某种原因,第三张表的代码未被接受。我收到一条错误消息:

ERROR 1005: Can't create table 'obl2.itemsubjects' (errno: 121)

我在网上看到这个错误,它说这是一个已知的 MYSQL 问题,但没有解决方案。

有什么想法吗?

最佳答案

MySQL 文档在 FOREIGN KEY Constraints 中说(强调我的):

If the CONSTRAINT symbol clause is given, the symbol value must be unique in the database. If the clause is not given, InnoDB creates the name automatically.

因此,itemsubject 表创建失败的原因是您有另一个(外键)约束,名为 itemID,或一个名为 subjectID 在数据库的其他表中。

拥有一个跨数据库的标准命名约定是件好事。正如您为索引使用 ColumnName_idx 一样,您可以为外键约束使用 ReferencedTable_ReferencingTable_FK:

CREATE  TABLE OBL2.itemsubjects (
itemID INT NOT NULL ,
subjectID INT NOT NULL ,
PRIMARY KEY
(itemID, subjectID) ,
INDEX itemID_idx -- I like these
(itemID ASC) ,
INDEX subjectID_idx -- two
(subjectID ASC) ,
CONSTRAINT item_itemsubject_FK -- what I propose, here
FOREIGN KEY (itemID)
REFERENCES OBL2.item (itemID)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT subject_itemsubject_FK -- and here
FOREIGN KEY (subjectID)
REFERENCES OBL2.subject (subjectID)
ON DELETE CASCADE
ON UPDATE CASCADE
);

关于mysql - SQL : ERROR 1005: Can't create table 'obl2.itemsubjects' (errno: 121),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14294561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com