【问题标题】:Can not add foreign key constraint, How should i fix this error?无法添加外键约束,我应该如何解决这个错误?
【发布时间】:2019-01-04 02:59:14
【问题描述】:

我想在员工中添加idDept的外键约束,但它告诉我“错误代码1215(HY000)”。

以下是我的 SQL 代码,工作台导出的。

我猜可能是 INDEX idDept_idx (idDept ASC) 引起的,但是在我的代码中删除它也是行不通的。

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';

CREATE SCHEMA IF NOT EXISTS `Hospitalization` DEFAULT CHARACTER SET utf8 ;
USE `Hospitalization` ;

CREATE TABLE IF NOT EXISTS `Hospitalization`.`Dept` (
  `idDept` INT(2) ZEROFILL NOT NULL,
  `name` VARCHAR(45) NOT NULL,
  `director` INT(5) NOT NULL,
  `location` INT(3) NOT NULL,
  PRIMARY KEY (`idDept`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `Hospitalization`.`Staff` (
  `idStaff` INT(5) ZEROFILL NOT NULL,
  `name` VARCHAR(45) NOT NULL,
  `sex` CHAR(2) NOT NULL,
  `contact` VARCHAR(45) NOT NULL,
  `role` VARCHAR(45) NOT NULL,
  `password` VARCHAR(45) NOT NULL DEFAULT '123456',
  `idDept` INT(2) NOT NULL,
  PRIMARY KEY (`idStaff`),
  INDEX `idDept_idx` (`idDept` ASC),
  CONSTRAINT `idDept`
    FOREIGN KEY (`idDept`)
    REFERENCES `Hospitalization`.`Dept` (`idDept`)
    ON DELETE CASCADE
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

【问题讨论】:

标签: mysql


【解决方案1】:

删除 ZEROFILL 在更新后的查询下运行:

CREATE TABLE IF NOT EXISTS `Hospitalization`.`Dept` (
  `idDept` INT(2) NOT NULL, 
  `name` VARCHAR(45) NOT NULL,
  `director` INT(5) NOT NULL,
  `location` INT(3) NOT NULL,
  PRIMARY KEY (`idDept`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `Hospitalization`.`Staff` (
  `idStaff` INT(5) ZEROFILL NOT NULL,
  `name` VARCHAR(45) NOT NULL,
  `sex` CHAR(2) NOT NULL,
  `contact` VARCHAR(45) NOT NULL,
  `role` VARCHAR(45) NOT NULL,
  `password` VARCHAR(45) NOT NULL DEFAULT '123456',
  `idDept` INT(2) NOT NULL,
  PRIMARY KEY (`idStaff`),
  INDEX `idDept_idx` (`idDept` ASC),
  CONSTRAINT `idDept`
    FOREIGN KEY (`idDept`)
    REFERENCES `Hospitalization`.`Dept` (`idDept`)
    ON DELETE CASCADE
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 2020-09-14
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多