我不明白为什么当我没有任何重复项时索引键重复项为什么总是出现1061错误。我看过其他关于类似问题的stackoverflow帖子,并且大多数帖子在多个外键具有相同名称时都遇到了这个问题。但是,这不适用于我的情况。
概括地说,我要做的是创建一个将书链接到任务的表。每个书籍ID都会有与该特定书籍相关的一些任务。这是一种多对多的关系,即许多书籍将与特定任务相关联。一个特定的任务将与许多书籍相关联。
因此,在这种多对多关系之间,我有一个Books x Tasks表,作为中介。该表具有其自己的主键和两个外键。一种是books表中的book ID,而tasks表中的task id。因此它们都是外键。这样,我可以将多个任务与多本书链接起来,每本书都由booksxtasks表中自己的唯一ID定义。
当我对此进行正向工程时,出现错误。
在服务器中执行SQL脚本错误:错误1061:重复的密钥名称'FK Tasks_TaskID_idx'SQL代码:在MYDB上创建索引FKTasks_TaskID_idx。BooksxTasks(Tasks_TaskID ASC)
CREATE TABLE IF NOT EXISTS `mydb`.`BooksxTasks` (
`BooksxTasksID` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`Books_BookID` INT UNSIGNED NOT NULL,
`Tasks_TaskID` TINYINT(2) UNSIGNED NOT NULL,
PRIMARY KEY (`BooksxTasksID`),
CONSTRAINT `FK Tasks_TaskID`
FOREIGN KEY (`Tasks_TaskID`)
REFERENCES `mydb`.`Tasks` (`TaskID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK Books_BooksID`
FOREIGN KEY (`Books_BookID`)
REFERENCES `mydb`.`Books` (`BookID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE INDEX `FK Tasks_TaskID_idx` ON `mydb`.`BooksxTasks` (`Tasks_TaskID` ASC);
CREATE INDEX `FK Books_BooksID_idx` ON `mydb`.`BooksxTasks` (`Books_BookID` ASC);
我还检查了整个数据库中所有约束的所有名称。没有重复的名字。那么这个重复的密钥错误是从哪里来的?