以下查询导致错误。我在MySQL Workbench中创建了这个查询
Error
SQL query:
-- -----------------------------------------------------
-- Table `smsdb`.`IntSupervisor`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `smsdb`.`IntSupervisor` (
`int_supr_id` VARCHAR( 32 ) NOT NULL ,
`cent_id` INT NOT NULL ,
INDEX `fk_IntSupervisor_Person1_idx` ( `int_supr_id` ASC ) ,
INDEX `fk_IntSupervisor_Center1_idx` ( `cent_id` ASC ) ,
PRIMARY KEY ( `int_supr_id` ) ,
CONSTRAINT `fk_parent_id` FOREIGN KEY ( `int_supr_id` )
REFERENCES `smsdb`.`Staff` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ,
CONSTRAINT `fk_center_id` FOREIGN KEY ( `cent_id` )
REFERENCES `smsdb`.`Center` (`cent_id`
) ON DELETE CASCADE ON UPDATE RESTRICT
) ENGINE = InnoDB;
执行时收到错误消息:
MySQL said: Documentation
#1022 - Can't write; duplicate key in table 'intsupervisor'
如果有人对我如何解决这个问题有任何想法,请指导我正确的方向。谢谢!
答案 0 :(得分:1)
(哎呀,快速阅读)
您正在向列'int_supr_id'添加索引,然后还向其添加primary_index。你只能添加1个索引(在正常情况下)[/ p>]
答案 1 :(得分:1)
在整个查询中,您不能有两个外键命名相同的东西。
PRIMARY KEY ( `int_supr_id` ) ,
CONSTRAINT `fk_parent_id` FOREIGN KEY ( `int_supr_id` )
在上面的陈述中,您无法在单个列上重新定义索引类型。
根据数据库的结构,您需要删除上面两行中的一行。我猜你从你正在创建的那个表中链接到另一个表,所以我建议替换...
PRIMARY KEY ( `int_supr_id` ) ,
CONSTRAINT `fk_parent_id` FOREIGN KEY ( `int_supr_id` )
以下内容:
CONSTRAINT `fk_parent_id` FOREIGN KEY ( `int_supr_id` )
(如果上述方法不起作用,您可能需要为外键指定表名)
答案 2 :(得分:0)
它可能会抛出错误,因为您在一列int_supr_id