2014-10-24 6 views
0

Я пытаюсь перенаправить инженер ERD, и я продолжаю получать следующее сообщение об ошибке. Я не совсем понимаю, что это значит, может кто-нибудь объяснить, где мне нужно искать проблему?ОШИБКА 1452 Mysql Forward Engineering

Выполнение 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', '[email protected]', NULL) 

SQL выполнение скрипта закончил: заявления: 32 удалось, 1 не удалось

Извлечение назад определения представлений в окончательном виде. не ничего принести

Это все сценарии, как я сказал, что я очень смущен и не знаю, где это исправить

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 
SET @[email protected]@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 [email protected]_SQL_MODE; 
SET [email protected]_FOREIGN_KEY_CHECKS; 
SET [email protected]_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', '[email protected]', 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', '[email protected]', 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', '[email protected]', 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', '[email protected]', 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', '[email protected]', 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', '[email protected]', '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', '[email protected]', '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', '[email protected]', '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', '[email protected]', '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', '[email protected]', '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', '[email protected]', 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', '[email protected]', 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', '[email protected]', 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', '[email protected]', 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', '[email protected]', 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; 

ответ

0

вам нужно сначала вставить запись в deparment таблицу

employee таблица имеет внешний ключ для таблицы deparment, так как в таблице department нет записи для идентификатора 1, вставка не работает.

Также в вашей таблице department есть employee есть внешний ключ, который будет рекурсивным.

необходимо изменить структуру таблицы.

0

Строка ошибки ниже ясно говорит вам, в чем проблема. dpt_id на вашем Employee Таблица имеет отношение внешнего ключа с Department таблиц dpt_id column.

Итак, сначала необходимо вставить строку в таблицу Department, прежде чем вставлять тот же ключ в таблицу employee. Другими словами, тот же dpt_id должен существовать в таблице department, прежде чем вы сможете вставить этот ключ в любую ссылочную таблицу.

CONSTRAINT fk_employee_department1 FOREIGN KEY (dpt_id) REFERENCES department (dpt_id)