簡體   English   中英

無法添加外鍵約束4

[英]Cannot add foreign key constraint 4

錯誤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;

我不明白為什么會出現此錯誤。 請有人幫助...在此先感謝..

要在列上定義foreign key ,必須為其父引用字段建立索引。

根據有關foreign key約束的文檔:

參考tbl_name(index_col_name,...)

在表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;

一旦在父列上定義了KEYzavisnost表中的外鍵列就可以引用它。

...
FOREIGN KEY (`key`)
REFERENCES `mydb`.`proba` (`value`)
...

參考

[CONSTRAINT [符號]]外鍵
[index_name](index_col_name,...)
參考tbl_name(index_col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option]

reference_option:
限制| 級聯| SET NULL | 不采取行動

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM