2016-01-29 58 views
1
CREATE TABLE IF NOT EXISTS `nm`.`list_activities` (
    `activity_id` INT NOT NULL COMMENT '', 
    `activity_name` VARCHAR(45) NULL COMMENT '', 
    `activity_type_id` INT NOT NULL COMMENT '', 
    PRIMARY KEY (`activity_id`, `activity_type_id`) COMMENT '', 
    CONSTRAINT `fk_list_activities_log` 
    FOREIGN KEY (`activity_id`) 
    REFERENCES `nm`.`log` (`activity_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


CREATE TABLE IF NOT EXISTS `nm`.`log` (
    `date_id` INT NOT NULL COMMENT '', 
    `activity_id` INT NOT NULL COMMENT '', 
    PRIMARY KEY (`date_id`, `activity_id`) COMMENT '') 
ENGINE = InnoDB; 

无法创建list_activities表,它显示错误消息MySQL的 - 不能外键约束创建表错误

错误代码:1215无法添加外键约束

in mysql

回答

1

这是因为你有复合主键,你只在关键的一列上创建FK,所以只是创建了一个部分函数依赖性。

PRIMARY KEY (`date_id`, `activity_id`) 

    FOREIGN KEY (`activity_id`) 
    REFERENCES `nm`.`log` (`activity_id`) 

您必须创建一个FK引用这两个键列来解决这个问题。更改您的FK定义是

FOREIGN KEY (`activity_id`, `activity_type_id`) 
    REFERENCES `nm`.`log` (`activity_id`, `date_id`) 
+0

但我需要在reffer在此日志DATE_ID日期表创建FK table.and一个我上面提到list_activities,创建日期表。谢谢 –

+0

@ N.Mehta,如果有帮助,请参阅编辑答案。 – Rahul

+0

,但它会反驳date_id日志表的颜色。 activity_type_id不同于另一个表所反映的不同。 –