簡體   English   中英

“ 1215-無法添加外鍵約束”

[英]“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.

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