mysql - ERROR 1452 Mysql 正向工程

标签 mysql sql-server mysql-error-1452

我尝试对我的 ERD 进行正向工程,但不断收到以下错误消息。我不太明白这意味着什么,有人可以解释我需要在哪里解决问题吗?

在服务器中执行SQL脚本

ERROR: Error 1452: Cannot add or update a child row: a foreign key constraint fails (database.employee, CONSTRAINT fk_employee_department1 FOREIGN KEY (dpt_id) REFERENCES department (dpt_id) ON DELETE NO ACTION ON UPDATE NO ACTION)

SQL 代码:

  INSERT INTO `database`.`employee` (`emp_id`, `dpt_id`, `emp_fname`, `emp_lname`, `emp_street`, `emp_city`, `emp_state`, `emp_zip`, `emp_phone`, `emp_email`, `emp_notes`) VALUES (NULL, 1, 'Harry', 'Potter', '4 Privet Drive', 'Tallahassee', 'Fl', '32304', '9544564567', 'hpotter@abc.com', NULL)

SQL脚本执行完成:语句:32条成功,1条失败

以最终形式取回 View 定义。 没有可获取的内容

这就是脚本的全部内容,就像我说的,我很困惑,不知道在哪里修复它

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 database
-- -----------------------------------------------------
DROP SCHEMA IF EXISTS `database` ;
CREATE SCHEMA IF NOT EXISTS `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
SHOW WARNINGS;
USE `database` ;

-- -----------------------------------------------------
-- Table `database`.`employee`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `database`.`employee` ;

SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `database`.`employee` (
  `emp_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `dpt_id` TINYINT UNSIGNED NULL,
  `emp_fname` VARCHAR(20) NOT NULL,
  `emp_lname` VARCHAR(20) NOT NULL,
  `emp_street` VARCHAR(20) NOT NULL,
  `emp_city` VARCHAR(20) NOT NULL,
  `emp_state` CHAR(2) NOT NULL,
  `emp_zip` CHAR(9) NOT NULL,
  `emp_phone` CHAR(10) NOT NULL,
  `emp_email` VARCHAR(100) NOT NULL,
  `emp_notes` VARCHAR(255) NULL,
  PRIMARY KEY (`emp_id`),
  INDEX `fk_employee_department1_idx` (`dpt_id` ASC),
  CONSTRAINT `fk_employee_department1`
    FOREIGN KEY (`dpt_id`)
    REFERENCES `database`.`department` (`dpt_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

SHOW WARNINGS;

-- -----------------------------------------------------
-- Table `database`.`division`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `database`.`division` ;

SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `database`.`division` (
  `div_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `emp_id` TINYINT UNSIGNED NOT NULL,
  `div_name` VARCHAR(45) NOT NULL,
  `div_street` VARCHAR(30) NOT NULL,
  `div_city` VARCHAR(20) NOT NULL,
  `div_state` CHAR(2) NOT NULL,
  `div_zip` CHAR(9) NOT NULL,
  `div_phone` CHAR(10) NOT NULL,
  `div_email` VARCHAR(100) NOT NULL,
  `div_url` VARCHAR(100) NOT NULL,
  `div_notes` VARCHAR(255) NULL,
  PRIMARY KEY (`div_id`),
  INDEX `fk_division_employee1_idx` (`emp_id` ASC),
  CONSTRAINT `fk_division_employee1`
    FOREIGN KEY (`emp_id`)
    REFERENCES `database`.`employee` (`emp_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

SHOW WARNINGS;

-- -----------------------------------------------------
-- Table `database`.`department`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `database`.`department` ;

SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `database`.`department` (
  `dpt_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `div_id` TINYINT UNSIGNED NOT NULL,
  `emp_id` TINYINT UNSIGNED NOT NULL,
  `dpt_name` VARCHAR(45) NOT NULL,
  `dpt_street` VARCHAR(30) NOT NULL,
  `dpt_city` VARCHAR(20) NOT NULL,
  `dpt_state` CHAR(2) NOT NULL,
  `dpt_zip` CHAR(9) NOT NULL,
  `dpt_phone` CHAR(10) NOT NULL,
  `dpt_email` VARCHAR(100) NOT NULL,
  `dpt_notes` VARCHAR(255) NULL,
  PRIMARY KEY (`dpt_id`),
  INDEX `fk_department_employee1_idx` (`emp_id` ASC),
  INDEX `fk_department_division1_idx` (`div_id` ASC),
  CONSTRAINT `fk_department_employee1`
    FOREIGN KEY (`emp_id`)
    REFERENCES `database`.`employee` (`emp_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_department_division1`
    FOREIGN KEY (`div_id`)
    REFERENCES `database
`.`division` (`div_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

SHOW WARNINGS;

-- -----------------------------------------------------
-- Table `database`.`project`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `database`.`project` ;

SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `database`.`project` (
  `pro_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `pro_name` VARCHAR(45) NOT NULL,
  `pro_notes` VARCHAR(255) NULL,
  PRIMARY KEY (`pro_id`))
ENGINE = InnoDB;

SHOW WARNINGS;

-- -----------------------------------------------------
-- Table `database`.`assignment`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `database`.`assignment` ;

SHOW WARNINGS;
CREATE TABLE IF NOT EXISTS `database`.`assignment` (
  `asn_id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
  `emp_id` TINYINT UNSIGNED NOT NULL,
  `pro_id` TINYINT UNSIGNED NOT NULL,
  `asn_name` VARCHAR(45) NOT NULL,
  `asn_start_date` DATE NOT NULL,
  `asn_end_date` DATE NOT NULL,
  `asn_duration` TINYINT UNSIGNED NOT NULL,
  `asn_eval` VARCHAR(200) NOT NULL,
  `asn_notes` VARCHAR(255) NULL,
  PRIMARY KEY (`asn_id`),
  INDEX `fk_assignment_employee1_idx` (`emp_id` ASC),
  INDEX `fk_assignment_project1_idx` (`pro_id` ASC),
  CONSTRAINT `fk_assignment_employee1`
    FOREIGN KEY (`emp_id`)
    REFERENCES `database`.`employee` (`emp_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_assignment_project1`
    FOREIGN KEY (`pro_id`)
    REFERENCES `database`.`project` (`pro_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

SHOW WARNINGS;

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

-- -----------------------------------------------------
-- Data for table `database`.`employee`
-- -----------------------------------------------------
START TRANSACTION;
USE `database`;
INSERT INTO `database`.`employee` (`emp_id`, `dpt_id`, `emp_fname`, `emp_lname`, `emp_street`, `emp_city`, `emp_state`, `emp_zip`, `emp_phone`, `emp_email`, `emp_notes`) VALUES (NULL, 1, 'Harry', 'Potter', '4 Privet Drive', 'Tallahassee', 'Fl', '32304', '9544564567', 'hpotter@abc.com', NULL);
INSERT INTO `database`.`employee` (`emp_id`, `dpt_id`, `emp_fname`, `emp_lname`, `emp_street`, `emp_city`, `emp_state`, `emp_zip`, `emp_phone`, `emp_email`, `emp_notes`) VALUES (NULL, 2, 'Sherlock ', 'Holmes', '221 Baker Street', 'Tallahassee', 'Fl', '32304', '9045674576', 'sholmes@abc.com', NULL);
INSERT INTO `database`.`employee` (`emp_id`, `dpt_id`, `emp_fname`, `emp_lname`, `emp_street`, `emp_city`, `emp_state`, `emp_zip`, `emp_phone`, `emp_email`, `emp_notes`) VALUES (NULL, 3, 'James', 'Kirk', '22 Space Drive', 'Tallahassee', 'Fl', '32304', '8768765645', 'jkirk@abc.com', NULL);
INSERT INTO `database`.`employee` (`emp_id`, `dpt_id`, `emp_fname`, `emp_lname`, `emp_street`, `emp_city`, `emp_state`, `emp_zip`, `emp_phone`, `emp_email`, `emp_notes`) VALUES (NULL, 4, 'Garrus', 'Vakarian', '1313 Zakera Street', 'Tallahassee', 'Fl', '32304', '7897656787', 'gvakarian@abc.com', NULL);
INSERT INTO `database`.`employee` (`emp_id`, `dpt_id`, `emp_fname`, `emp_lname`, `emp_street`, `emp_city`, `emp_state`, `emp_zip`, `emp_phone`, `emp_email`, `emp_notes`) VALUES (NULL, 5, 'Bruce ', 'Wayne', '45 Gotham Boulevard', 'Tallahassee', 'Fl', '32304', '6754563412', 'bwayne@abc.com', NULL);

COMMIT;


-- -----------------------------------------------------
-- Data for table `database`.`division`
-- -----------------------------------------------------
START TRANSACTION;
USE `database`;
INSERT INTO `database`.`division` (`div_id`, `emp_id`, `div_name`, `div_street`, `div_city`, `div_state`, `div_zip`, `div_phone`, `div_email`, `div_url`, `div_notes`) VALUES (NULL, 1, 'Repairs', '123 Main Street', 'Tallahassee', 'Fl', '32304', '8506445677', 'repairs@abc.com', 'abcrepairs.com', NULL);
INSERT INTO `database`.`division` (`div_id`, `emp_id`, `div_name`, `div_street`, `div_city`, `div_state`, `div_zip`, `div_phone`, `div_email`, `div_url`, `div_notes`) VALUES (NULL, 2, 'Management', '124 Side Street', 'Tallahassee', 'Fl', '32304', '8506445332', 'management@abc.com', 'abcmanagement.com', NULL);
INSERT INTO `database`.`division` (`div_id`, `emp_id`, `div_name`, `div_street`, `div_city`, `div_state`, `div_zip`, `div_phone`, `div_email`, `div_url`, `div_notes`) VALUES (NULL, 3, 'Delivery', '125 Adjacent Avenue', 'Tallahassee', 'Fl', '32304', '8506445666', 'delivery@abc.com', 'abcdelivery.com', NULL);
INSERT INTO `database`.`division` (`div_id`, `emp_id`, `div_name`, `div_street`, `div_city`, `div_state`, `div_zip`, `div_phone`, `div_email`, `div_url`, `div_notes`) VALUES (NULL, 4, 'Stock', '126 Cross Boulevard', 'Tallahassee', 'Fl', '32304', '8506444444', 'stock@abc.com', 'abcstock.com', NULL);
INSERT INTO `database`.`division` (`div_id`, `emp_id`, `div_name`, `div_street`, `div_city`, `div_state`, `div_zip`, `div_phone`, `div_email`, `div_url`, `div_notes`) VALUES (NULL, 5, 'Technology', '127 Different Avenue', 'Tallahassee', 'Fl', '32304', '8506445656', 'tech@abc.com', 'abctech.com', NULL);

COMMIT;


-- -----------------------------------------------------
-- Data for table `database`.`department`
-- -----------------------------------------------------
START TRANSACTION;
USE `database`;
INSERT INTO `database`.`department` (`dpt_id`, `div_id`, `emp_id`, `dpt_name`, `dpt_street`, `dpt_city`, `dpt_state`, `dpt_zip`, `dpt_phone`, `dpt_email`, `dpt_notes`) VALUES (NULL, 1, 1, 'Computer Repair', '123 Main Street', 'Tallahassee', 'Fl', '32304', '8506443567', 'comprepair@abc.com', NULL);
INSERT INTO `database`.`department` (`dpt_id`, `div_id`, `emp_id`, `dpt_name`, `dpt_street`, `dpt_city`, `dpt_state`, `dpt_zip`, `dpt_phone`, `dpt_email`, `dpt_notes`) VALUES (NULL, 2, 2, 'Customer Service', '124 Side Street', 'Tallahassee', 'Fl', '32304', '8506445678', 'customers@abc.com', NULL);
INSERT INTO `database`.`department` (`dpt_id`, `div_id`, `emp_id`, `dpt_name`, `dpt_street`, `dpt_city`, `dpt_state`, `dpt_zip`, `dpt_phone`, `dpt_email`, `dpt_notes`) VALUES (NULL, 3, 3, 'Warehouse', '125 Adjacent Avenue', 'Tallahassee', 'Fl', '32304', '8506443471', 'warehouse@abc.com', NULL);
INSERT INTO `database`.`department` (`dpt_id`, `div_id`, `emp_id`, `dpt_name`, `dpt_street`, `dpt_city`, `dpt_state`, `dpt_zip`, `dpt_phone`, `dpt_email`, `dpt_notes`) VALUES (NULL, 4, 4, 'Stockroom', '126 Cross Boulevard', 'Tallahassee', 'Fl', '32304', '8506447889', 'stockroom@abc.com', NULL);
INSERT INTO `database`.`department` (`dpt_id`, `div_id`, `emp_id`, `dpt_name`, `dpt_street`, `dpt_city`, `dpt_state`, `dpt_zip`, `dpt_phone`, `dpt_email`, `dpt_notes`) VALUES (NULL, 5, 5, 'IT', '127 Different Avenue', 'Tallahassee', 'Fl', '32304', '8506445633', 'it@abc.com', NULL);

COMMIT;


-- -----------------------------------------------------
-- Data for table `database`.`project`
-- -----------------------------------------------------
START TRANSACTION;
USE `database`;
INSERT INTO `database`.`project` (`pro_id`, `pro_name`, `pro_notes`) VALUES (NULL, '1', NULL);
INSERT INTO `database`.`project` (`pro_id`, `pro_name`, `pro_notes`) VALUES (NULL, '2', NULL);
INSERT INTO `database`.`project` (`pro_id`, `pro_name`, `pro_notes`) VALUES (NULL, '3', NULL);

COMMIT;


-- -----------------------------------------------------
-- Data for table `database`.`assignment`
-- -----------------------------------------------------
START TRANSACTION;
USE `database`;
INSERT INTO `database`.`assignment` (`asn_id`, `emp_id`, `pro_id`, `asn_name`, `asn_start_date`, `asn_end_date`, `asn_duration`, `asn_eval`, `asn_notes`) VALUES (NULL, 1, 1, 'Assignment 1', '2013-12-14', '2013-12-19', 5, '5', NULL);
INSERT INTO `database`.`assignment` (`asn_id`, `emp_id`, `pro_id`, `asn_name`, `asn_start_date`, `asn_end_date`, `asn_duration`, `asn_eval`, `asn_notes`) VALUES (NULL, 2, 2, 'Assignment 2', '2014-01-24', '2014-01-25', 1, '4', NULL);
INSERT INTO `database`.`assignment` (`asn_id`, `emp_id`, `pro_id`, `asn_name`, `asn_start_date`, `asn_end_date`, `asn_duration`, `asn_eval`, `asn_notes`) VALUES (NULL, 3, 3, 'Assignment 3', '2014-01-01', '2014-02-01', 30, '4', NULL);
INSERT INTO `database`.`assignment` (`asn_id`, `emp_id`, `pro_id`, `asn_name`, `asn_start_date`, `asn_end_date`, `asn_duration`, `asn_eval`, `asn_notes`) VALUES (NULL, 4, 1, 'Assignment 4', '2014-03-03', '2014-03-04', 1, '4', NULL);
INSERT INTO `database`.`assignment` (`asn_id`, `emp_id`, `pro_id`, `asn_name`, `asn_start_date`, `asn_end_date`, `asn_duration`, `asn_eval`, `asn_notes`) VALUES (NULL, 5, 2, 'Assignment 5', '2014-03-04', '2014-03-06', 3, '2', NULL);

COMMIT;

最佳答案

您需要首先将条目插入deparment

employee 表具有 deparment 表的外键,因为 department 表中没有 id 1 的条目,请插入失败了。

此外,您的 department 表中的 employee 具有外键,该外键将是递归的。

您需要更改表结构。

关于mysql - ERROR 1452 Mysql 正向工程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555035/

相关文章:

c# - Entity Framework 在工作量大的情况下抛出意外异常

sql-server - 信息模式和主键

c# Win Form - CLR 无法从 COM 上下文转换

foreign-keys - 尝试使用heidisql在mysql中添加外键

mysql - 错误 1452 : Cannot add or update a child row: a foreign key constraint fails

php - 如何从此结果集创建一个数组(嵌套类别存储在具有遍历模型的数据库中)?

php - 如何从一个表中选择 *,其中 UID 在另一个表中不存在且具有特定值?

mysql - 在 MySQL 中出现 ERROR 1701、ERROR 1452 和 ERROR 1305 错误 - 需要一些专业知识

mysql - 从 SQL 中的位置表获取最新价格

javascript - 使用 PHP 根据用户名加载不同的 View