错误1215:无法添加外键约束
CREATE TABLE IF NOT EXISTS `mydb`.`proba` (
`key` VARCHAR(255) NOT NULL,
`value` VARCHAR(255) NOT NULL,
PRIMARY KEY (`key`, `value`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`zavisnost` (
`key` VARCHAR(255) NOT NULL,
`value` VARCHAR(255) NOT NULL,
PRIMARY KEY (`key`, `value`),
CONSTRAINT `fk_zavisnost_proba1`
FOREIGN KEY (`key`)
REFERENCES `mydb`.`proba` (`value`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
我不明白为什么会出现此错误。请有人帮忙......提前致谢..
答案 0 :(得分:0)
要在列上定义foreign key
,必须将其父引用字段编入索引。
根据foreign key
约束的文档:
REFERENCES tbl_name(index_col_name,...)
在表INDEX
中的value
上定义proba
,它应该正常运行。
CREATE TABLE IF NOT EXISTS `mydb`.`proba` (
`key` VARCHAR(255) NOT NULL,
`value` VARCHAR(255) NOT NULL,
KEY ( `value` ), -- <-------- this line was missing
PRIMARY KEY (`key`, `value`))
ENGINE = InnoDB;
在父列上定义KEY
后,zavisnost
表中的外键列可以引用它,例如。
...
FOREIGN KEY (`key`)
REFERENCES `mydb`.`proba` (`value`)
...
请参阅:
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name](index_col_name,...)
参考文献tbl_name(index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]reference_option:
限制| CASCADE | SET NULL |没有行动