创建表时MySQL错误1005

时间:2012-07-28 06:57:48

标签: mysql mysql-error-1005

运行以下语句时:

CREATE  TABLE `intelischool`.`facultyclasses` (
  `id` VARCHAR(45) NOT NULL ,
  `class` VARCHAR(45) NOT NULL ,
  `subject` VARCHAR(45) NOT NULL ,
  `year` VARCHAR(45) NOT NULL ,
  `section` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`id`, `section`, `year`, `subject`, `class`) ,
  INDEX `id` (`id` ASC) ,
  CONSTRAINT `id`
    FOREIGN KEY (`id` )
    REFERENCES `intelischool`.`faculty` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)

我收到错误:

ERROR 1005: Can't create table 'intelischool.facultyclasses' (errno: 121) 

2 个答案:

答案 0 :(得分:0)

在外键定义之前缺少逗号

,否则

删除表并使用索引创建它们(而不是向已创建的表添加索引)

答案 1 :(得分:0)

This mailing list thread是同一个问题,得出的结论是它是由一个重复的约束名称引起的。

你可能有另一个

CONSTRAINT `id`

在同一个数据库的另一个表中。这些名称必须是每个数据库唯一的。给它一个像

这样的名字
CONSTRAINT `facultyclasses_foreignkey`

或者只是删除该行,让数据库自动生成一个名称。