[英]Cannot add foreign key constraint 4
Error 1215: Cannot add foreign key constraint 错误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;
I don't understand why this error appears. 我不明白为什么会出现此错误。 Please someone help... Thanks in advance.. 请有人帮助...在此先感谢..
To define a foreign key
on a column its parent referenced field must be indexed. 要在列上定义foreign key
,必须为其父引用字段建立索引。
As per documentation on foreign key
constraints: 根据有关foreign key
约束的文档:
REFERENCES tbl_name (index_col_name,...) 参考tbl_name(index_col_name,...)
Define an INDEX
on value
in table proba
and it should be working. 在表proba
value
上定义一个INDEX
,它应该可以工作。
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;
Once you define a KEY
on the parent column, a foreign key column in zavisnost
table can refer it, like. 一旦在父列上定义了KEY
, zavisnost
表中的外键列就可以引用它。
...
FOREIGN KEY (`key`)
REFERENCES `mydb`.`proba` (`value`)
...
Refer to : 参考 :
[CONSTRAINT [symbol]] FOREIGN KEY [CONSTRAINT [符号]]外键
[index_name] (index_col_name, ...) [index_name](index_col_name,...)
REFERENCES tbl_name (index_col_name,...) 参考tbl_name(index_col_name,...)
[ON DELETE reference_option] [ON DELETE reference_option]
[ON UPDATE reference_option] [ON UPDATE reference_option]reference_option: reference_option:
RESTRICT | 限制| CASCADE | 级联| SET NULL | SET NULL | NO ACTION 不采取行动
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.