2012-07-28 124 views
0

时当运行下面的语句:MySQL错误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) 
+0

作为PRIMARY KEY的表的所有字段都是BAD DESIGN – 2012-07-28 07:29:37

回答

0

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

你可能有另一个

CONSTRAINT `id` 

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

CONSTRAINT `facultyclasses_foreignkey` 

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

0

外键界定及之前缺少逗号

否则

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

相关问题