簡體   English   中英

錯誤#1215-無法添加外鍵約束

[英]Error #1215 - Cannot add foreign key constraint

我已經用MySql Workbench生成了一個sql腳本。

當我嘗試創建數據庫時,出現“錯誤1215 1215-無法添加外鍵約束”。

問題似乎與我在最后一個create表中的最后一個外鍵有關:

CONSTRAINT `fk_tb_animation_option_col_debut`
FOREIGN KEY (`DT_ANO_DEBUT`)
REFERENCES `brest2016`.`tb_animation_option` (`DT_ANO_DEBUT`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)

這是我的整個腳本:

-- MySQL Script generated by MySQL Workbench
-- 01/16/16 00:46:22
-- Model: New Model    Version: 1.0
-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

-- -----------------------------------------------------
-- Schema brest2016
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `brest2016` DEFAULT CHARACTER SET utf8 ;
USE `brest2016` ;

-- -----------------------------------------------------
-- Table `brest2016`.`tb_visiteur`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `brest2016`.`tb_visiteur` (
  `D_VI_CODE` INT(3) NOT NULL AUTO_INCREMENT,
  `V_VI_NOM` VARCHAR(45) NOT NULL,
  `V_VI_PRENOM` VARCHAR(45) NOT NULL,
  `V_VI_EMAIL` VARCHAR(45) NOT NULL,
  `V_VI_TELEPHONE` VARCHAR(45) NULL,
  `DT_VI_DEBUT` DATETIME NOT NULL,
  `DT_VI_FIN` DATETIME NOT NULL,
  PRIMARY KEY (`D_VI_CODE`),
  UNIQUE INDEX `idVisiteur_UNIQUE` (`D_VI_CODE` ASC),
  UNIQUE INDEX `email_UNIQUE` (`V_VI_EMAIL` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `brest2016`.`tb_type_animation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `brest2016`.`tb_type_animation` (
  `D_TY_CODE` INT(3) NOT NULL AUTO_INCREMENT,
  `V_TY_LIBELLE` VARCHAR(45) NULL,
  PRIMARY KEY (`D_TY_CODE`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `brest2016`.`tb_animation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `brest2016`.`tb_animation` (
  `D_AN_CODE` INT(3) NOT NULL AUTO_INCREMENT,
  `V_AN_LIBELLE` VARCHAR(45) NOT NULL,
  `V_AN_LIEU` VARCHAR(45) NOT NULL,
  `V_AN_IMAGE` VARCHAR(45) NULL,
  `V_AN_DESCRIPTIF` VARCHAR(45) NULL,
  `D_AN_PRIORITE` VARCHAR(45) NOT NULL,
  `D_TY_CODE` INT(3) NULL,
  PRIMARY KEY (`D_AN_CODE`),
  UNIQUE INDEX `idAnimation_UNIQUE` (`D_AN_CODE` ASC),
  INDEX `fk_tb_type_animation_col_code_1_idx` (`D_TY_CODE` ASC),
  CONSTRAINT `fk_tb_type_animation_col_code`
    FOREIGN KEY (`D_TY_CODE`)
    REFERENCES `brest2016`.`tb_type_animation` (`D_TY_CODE`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `brest2016`.`tb_option`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `brest2016`.`tb_option` (
  `D_OP_CODE` INT(3) NOT NULL AUTO_INCREMENT,
  `V_OP_LIBELLE` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`D_OP_CODE`),
  UNIQUE INDEX `idOption_UNIQUE` (`D_OP_CODE` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `brest2016`.`tb_animation_option`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `brest2016`.`tb_animation_option` (
  `D_AN_CODE` INT(3) NOT NULL,
  `D_OP_CODE` INT(3) NOT NULL,
  `DT_ANO_DEBUT` DATETIME NOT NULL,
  `DT_ANO_FIN` DATETIME NOT NULL,
  `D_ANO_PLACES_MAX` INT(3) NOT NULL,
  `D_ANO_DUREE` INT(3) NOT NULL,
  PRIMARY KEY (`D_AN_CODE`, `D_OP_CODE`, `DT_ANO_DEBUT`),
  INDEX `fk_tb_option_idx` (`D_OP_CODE` ASC),
  CONSTRAINT `fk_tb_animation_col_code`
    FOREIGN KEY (`D_AN_CODE`)
    REFERENCES `brest2016`.`tb_animation` (`D_AN_CODE`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_tb_option_col_code`
    FOREIGN KEY (`D_OP_CODE`)
    REFERENCES `brest2016`.`tb_option` (`D_OP_CODE`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
COMMENT = 'association entre une animation et une option';


-- -----------------------------------------------------
-- Table `brest2016`.`tb_administrateur`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `brest2016`.`tb_administrateur` (
  `D_AD_CODE` INT(3) NOT NULL,
  `V_AD_ID` VARCHAR(12) NOT NULL,
  `V_AD_MDP` VARCHAR(12) NOT NULL,
  PRIMARY KEY (`D_AD_CODE`),
  UNIQUE INDEX `idAdministrateur_UNIQUE` (`D_AD_CODE` ASC),
  UNIQUE INDEX `V_UT_LOGIN_UNIQUE` (`V_AD_ID` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `brest2016`.`tb_reservation`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `brest2016`.`tb_reservation` (
  `D_VI_CODE` INT(3) NOT NULL,
  `D_AN_CODE` INT(3) NOT NULL,
  `D_OP_CODE` INT(3) NOT NULL,
  `DT_ANO_DEBUT` DATETIME NOT NULL,
  PRIMARY KEY (`D_VI_CODE`, `D_AN_CODE`, `D_OP_CODE`, `DT_ANO_DEBUT`),
  INDEX `fk_tb_animation_option_col_code_animation_idx` (`D_AN_CODE` ASC),
  INDEX `fk_tb_animation_option_col_code_option_idx` (`D_OP_CODE` ASC),
  INDEX `fk_tb_animation_option_col_debut_idx` (`DT_ANO_DEBUT` ASC),
  CONSTRAINT `fk_tb_visiteur_col_code`
    FOREIGN KEY (`D_VI_CODE`)
    REFERENCES `brest2016`.`tb_visiteur` (`D_VI_CODE`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_tb_animation_option_col_code_animation`
    FOREIGN KEY (`D_AN_CODE`)
    REFERENCES `brest2016`.`tb_animation_option` (`D_AN_CODE`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_tb_animation_option_col_code_option`
    FOREIGN KEY (`D_OP_CODE`)
    REFERENCES `brest2016`.`tb_animation_option` (`D_OP_CODE`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_tb_animation_option_col_debut`
    FOREIGN KEY (`DT_ANO_DEBUT`)
    REFERENCES `brest2016`.`tb_animation_option` (`DT_ANO_DEBUT`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

必須為外鍵中命名的列建立索引。

CREATE TABLE IF NOT EXISTS `brest2016`.`tb_animation_option` (
  `D_AN_CODE` INT(3) NOT NULL,
  `D_OP_CODE` INT(3) NOT NULL,
  `DT_ANO_DEBUT` DATETIME NOT NULL,
  `DT_ANO_FIN` DATETIME NOT NULL,
  `D_ANO_PLACES_MAX` INT(3) NOT NULL,
  `D_ANO_DUREE` INT(3) NOT NULL,
  PRIMARY KEY (`D_AN_CODE`, `D_OP_CODE`, `DT_ANO_DEBUT`),
  INDEX `fk_tb_option_idx` (`D_OP_CODE` ASC),
  INDEX `dt_ano_debut_idx` (`T_ANO_DEBUT`), -- Add this line
  CONSTRAINT `fk_tb_animation_col_code`
    FOREIGN KEY (`D_AN_CODE`)
    REFERENCES `brest2016`.`tb_animation` (`D_AN_CODE`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_tb_option_col_code`
    FOREIGN KEY (`D_OP_CODE`)
    REFERENCES `brest2016`.`tb_option` (`D_OP_CODE`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
COMMENT = 'association entre une animation et une option';

暫無
暫無

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

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