MySQL的使用索引错误创建表
-
19-09-2019 - |
题
好了,所以我创建MySQL中使用索引和外键的表。我使用MySQL Workbench中创建的表,然后把它正向工程一个SQL创建脚本,(我在视觉DB环境优于只是写出来,用手SQL代码的时候了)。
问题是很多时候我导入SQL脚本到MySQL,我得到了经典eror:
#1005 - Can't create table 'db.tablename' (errno: 121)
我已经成功每一次,通常相关指数/外键要弄清楚这个问题,但我现在开始不必每次修复它得到恼火。我真的不明白是什么问题(尤其是当一个MySQL产品为自己的数据库创建SQL代码)。下面是一些代码,通常导致该问题。
CREATE TABLE IF NOT EXISTS `db`.`groupMembers` (
`groupMembersID` INT NOT NULL AUTO_INCREMENT ,
`groupID` INT NOT NULL ,
`userID` INT NULL ,
PRIMARY KEY (`groupMembersID`) ,
INDEX `group` (`groupID` ASC) ,
INDEX `user` (`userID` ASC) ,
CONSTRAINT `group`
FOREIGN KEY (`groupID` )
REFERENCES `db`.`groups` (`groupsID` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `user`
FOREIGN KEY (`userID` )
REFERENCES `db`.`users` (`usersID` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
在错误通常来自于第一索引定义 - 甚至当我拿出索引定义,我只是在第一个外键约束定义得到的错误。我已经检查,和外键远程列和本地列是相同的数据类型和大小。
解决方案
“错误号121指的是重复键错误”
约束必须在数据库中唯一的名字,你可能想改变你的FK名称。像这样,FK_groupMembers_group
和FK_groupMembers_user
。
不隶属于 StackOverflow