0

运行以下语句时:

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) 
4

2 回答 2

0

外键定义前缺少逗号

除此以外

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

于 2012-07-28T07:05:05.463 回答
0

这个邮件列表线程是关于同样的问题,并且在那里得出的结论是它是由重复的约束名称引起的。

你可能还有另一个

CONSTRAINT `id`

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

CONSTRAINT `facultyclasses_foreignkey`

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

于 2012-07-28T21:13:37.353 回答