[英]“1215 - cannot add foreign key constraint”
我必須在“ Sceglie”表中創建一個雙外鍵,但MySQL始終向我顯示相同的錯誤:“#1215-無法添加外鍵約束”。 它只能用“Cognome_candidato”,而不是用“Nome_candidato” .I've也試着寫發生的FOREIGN KEY (Nome_candidato, Cognome_candidato) REFERENCES Candidato(Nome_candidato, Cognome_candidato) ON DELETE CASCADE ON UPDATE CASCADE
,但它並沒有創造雙外鍵。 我該如何解決?
create table Candidato (
Nome_candidato varchar(255),
Cognome_candidato varchar(255),
PRIMARY KEY (Nome_candidato, Cognome_candidato));
create table Sceglie (
Email varchar(255),
Nome_candidato varchar(255),
Cognome_candidato varchar(255),
PRIMARY KEY (Email, Nome_candidato, Cognome_candidato),
FOREIGN KEY (Email) REFERENCES Utente(Email)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (Nome_candidato) REFERENCES Candidato(Nome_candidato)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (Cognome_candidato) REFERENCES Candidato(Cognome_candidato)
ON DELETE CASCADE
ON UPDATE CASCADE );
在外鍵可以引用該列之前,您需要一個cognome_candidato索引。
這應該解決。
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Candidato`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Candidato` (
`Nome_candidato` VARCHAR(255) NOT NULL,
`Cognome_candidato` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Nome_candidato`, `Cognome_candidato`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Utente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Utente` (
`Email` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Email`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Sceglie`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Sceglie` (
`Nome_candidato` VARCHAR(255) NOT NULL,
`Cognome_candidato` VARCHAR(255) NOT NULL,
`Email` VARCHAR(255) NOT NULL,
PRIMARY KEY (`Nome_candidato`, `Cognome_candidato`, `Email`),
INDEX `fk_Candidato_has_Utente_Utente1_idx` (`Email` ASC),
INDEX `fk_Candidato_has_Utente_Candidato_idx` (`Nome_candidato` ASC, `Cognome_candidato` ASC),
CONSTRAINT `fk_Candidato_has_Utente_Candidato`
FOREIGN KEY (`Nome_candidato` , `Cognome_candidato`)
REFERENCES `mydb`.`Candidato` (`Nome_candidato` , `Cognome_candidato`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_Candidato_has_Utente_Utente1`
FOREIGN KEY (`Email`)
REFERENCES `mydb`.`Utente` (`Email`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.