2014-04-22 5 views
0

MySQL Workbench에서 EER 다이어그램을 전달하려고 시도했지만 계속이 오류가 발생합니다. 나는 이것에 상당히 익숙해 져서 어떤 도움을 주어도 좋을뿐만 아니라 개선 할 수있는 어떤 것도 인정할 것입니다. 오류 메시지와 SQL 스크립트가 동봉됩니다. 감사합니다.ERROR 1005 MySQL Workbench Forward engineering

ERROR: Error 1005: Can't create table 'mnn09c.ASSIGN' (errno: 150) 
    CREATE TABLE IF NOT EXISTS `mnn09c`.`ASSIGN` (
    `ASN_ID` INT NOT NULL, 
    `ASN_START_D` DATETIME NOT NULL, 
    `ASN_END_D` DATETIME NOT NULL, 
    `EMP_ID` INT NOT NULL, 
    PRIMARY KEY (`ASN_ID`), 
    CONSTRAINT `fk_ASSIGN_PRODUCT1` 
    FOREIGN KEY (`ASN_ID`) 
    REFERENCES `mnn09c`.`PRODUCT` (`ASN_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
    ENGINE = InnoDB 

    SQL script execution finished: statements: 13 succeeded, 1 failed 

    Fetching back view definitions in final form. 

    Nothing to fetch 

    Executing SQL script in server 

    ERROR: Error 1005: Can't create table 'mnn09c.ASSIGN' (errno: 150) 

    CREATE TABLE IF NOT EXISTS `mnn09c`.`ASSIGN` (

    `ASN_ID` INT NOT NULL, 

    `ASN_START_D` DATETIME NOT NULL, 

    `ASN_END_D` DATETIME NOT NULL, 

    `EMP_ID` INT NOT NULL, 

    PRIMARY KEY (`ASN_ID`), 

    CONSTRAINT `fk_ASSIGN_PRODUCT1` 

    FOREIGN KEY (`ASN_ID`) 

    REFERENCES `mnn09c`.`PRODUCT` (`ASN_ID`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION) 

    ENGINE = InnoDB 



    SQL script execution finished: statements: 13 succeeded, 1 failed 

    Fetching back view definitions in final form. 

    Nothing to fetch 
___________________________________________________________ 

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

    DROP SCHEMA IF EXISTS `mnn09c` ; 
    CREATE SCHEMA IF NOT EXISTS `mnn09c` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci 
    ; 
    SHOW WARNINGS; 
    USE `mnn09c` ; 

    -- ----------------------------------------------------- 
    -- Table `mnn09c`.`PRODUCT` 
    -- ----------------------------------------------------- 
    DROP TABLE IF EXISTS `mnn09c`.`PRODUCT` ; 

    SHOW WARNINGS; 
    CREATE TABLE IF NOT EXISTS `mnn09c`.`PRODUCT` (
    `PROD_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
    `PROD_DURATION` INT NOT NULL, 
    `PROD_EVAL` VARCHAR(45) NOT NULL, 
    `ASN_ID` INT NOT NULL, 
    PRIMARY KEY (`PROD_ID`)) 
    ENGINE = InnoDB; 

    SHOW WARNINGS; 

    -- ----------------------------------------------------- 
    -- Table `mnn09c`.`ASSIGN` 
    -- ----------------------------------------------------- 
    DROP TABLE IF EXISTS `mnn09c`.`ASSIGN` ; 

    SHOW WARNINGS; 
    CREATE TABLE IF NOT EXISTS `mnn09c`.`ASSIGN` (
     `ASN_ID` INT NOT NULL, 
     `ASN_START_D` DATETIME NOT NULL, 
     `ASN_END_D` DATETIME NOT NULL, 
     `EMP_ID` INT NOT NULL, 
     PRIMARY KEY (`ASN_ID`), 
     CONSTRAINT `fk_ASSIGN_PRODUCT1` 
     FOREIGN KEY (`ASN_ID`) 
     REFERENCES `mnn09c`.`PRODUCT` (`ASN_ID`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 

    SHOW WARNINGS; 

    -- ----------------------------------------------------- 
    -- Table `mnn09c`.`EMPLOYEE` 
    -- ----------------------------------------------------- 
    DROP TABLE IF EXISTS `mnn09c`.`EMPLOYEE` ; 

    SHOW WARNINGS; 
    CREATE TABLE IF NOT EXISTS `mnn09c`.`EMPLOYEE` (
     `EMP_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
     `EMP_LNAME` VARCHAR(45) NOT NULL, 
     `EMP_FNAME` VARCHAR(45) NOT NULL, 
     `EMP_ADDR` VARCHAR(45) NOT NULL, 
     `DEPT_ID` INT NOT NULL, 
     `DIVS_ID` INT NOT NULL, 
     PRIMARY KEY (`EMP_ID`), 
     INDEX `fk_EMPLOYEE_DEPT_idx` (`DEPT_ID` ASC), 
     CONSTRAINT `fk_EMPLOYEE_DEPT` 
     FOREIGN KEY (`DEPT_ID`) 
     REFERENCES `mnn09c`.`DEPT` (`DEPT_ID`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION, 
     CONSTRAINT `fk_EMPLOYEE_ASSIGN1` 
     FOREIGN KEY (`EMP_ID`) 
     REFERENCES `mnn09c`.`ASSIGN` (`EMP_ID`) 
     ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 

    SHOW WARNINGS; 

    -- ----------------------------------------------------- 
    -- Table `mnn09c`.`DIVISION` 
    -- ----------------------------------------------------- 
    DROP TABLE IF EXISTS `mnn09c`.`DIVISION` ; 

    SHOW WARNINGS; 
    CREATE TABLE IF NOT EXISTS `mnn09c`.`DIVISION` (
     `DIVS_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
     `DIVS_NAME` VARCHAR(45) NOT NULL, 
     `DIVS_URL` VARCHAR(45) NOT NULL, 
     `DIVS_EMAIL` VARCHAR(45) NOT NULL, 
     `DIVS_LOC` VARCHAR(45) NOT NULL, 
     `EMP_ID` INT NOT NULL, 
     PRIMARY KEY (`DIVS_ID`), 
     UNIQUE INDEX `DIVS_ID_UNIQUE` (`DIVS_ID` ASC), 
     UNIQUE INDEX `DIVS_URL_UNIQUE` (`DIVS_URL` ASC), 
     UNIQUE INDEX `DIVS_EMAIL_UNIQUE` (`DIVS_EMAIL` ASC), 
     INDEX `fk_DIVISION_EMPLOYEE1_idx` (`EMP_ID` ASC), 
     CONSTRAINT `fk_DIVISION_EMPLOYEE1` 
     FOREIGN KEY (`EMP_ID`) 
    REFERENCES `mnn09c`.`EMPLOYEE` (`EMP_ID`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 

    SHOW WARNINGS; 

    -- ----------------------------------------------------- 
    -- Table `mnn09c`.`DEPT` 
    -- ----------------------------------------------------- 
    DROP TABLE IF EXISTS `mnn09c`.`DEPT` ; 

    SHOW WARNINGS; 
    CREATE TABLE IF NOT EXISTS `mnn09c`.`DEPT` (
     `DEPT_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
     `DEPT_NAME` VARCHAR(45) NOT NULL, 
     `DEPT_LOCATION` VARCHAR(45) NOT NULL, 
     `DEPT_EMAIL` VARCHAR(45) NOT NULL, 
     `DEPT_URL` VARCHAR(45) NOT NULL, 
     `EMP_ID` INT NOT NULL, 
     `DIVS_ID` INT NOT NULL, 
     PRIMARY KEY (`DEPT_ID`), 
     UNIQUE INDEX `DEPT_ID_UNIQUE` (`DEPT_ID` ASC), 
     UNIQUE INDEX `DEPT_EMAIL_UNIQUE` (`DEPT_EMAIL` ASC), 
     UNIQUE INDEX `DEPT__UNIQUE` (`DEPT_URL` ASC), 
     INDEX `fk_DEPT_DIVISION1_idx` (`DIVS_ID` ASC), 
     INDEX `fk_DEPT_EMPLOYEE1_idx` (`EMP_ID` ASC), 
     CONSTRAINT `fk_DEPT_DIVISION1` 
     FOREIGN KEY (`DIVS_ID`) 
     REFERENCES `mnn09c`.`DIVISION` (`DIVS_ID`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION, 
     CONSTRAINT `fk_DEPT_EMPLOYEE1` 
     FOREIGN KEY (`EMP_ID`) 
     REFERENCES `mnn09c`.`EMPLOYEE` (`EMP_ID`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 

    SHOW WARNINGS; 

    -- ----------------------------------------------------- 
    -- Table `mnn09c`.`MANAGE` 
    -- ----------------------------------------------------- 
    DROP TABLE IF EXISTS `mnn09c`.`MANAGE` ; 

    SHOW WARNINGS; 
    CREATE TABLE IF NOT EXISTS `mnn09c`.`MANAGE` (
     `MANAGER_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT, 
     PRIMARY KEY (`MANAGER_ID`), 
     UNIQUE INDEX `MANAGER_ID_UNIQUE` (`MANAGER_ID` ASC)) 
    ENGINE = InnoDB; 

    SHOW WARNINGS; 

    SET [email protected]_SQL_MODE; 
    SET [email protected]_FOREIGN_KEY_CHECKS; 
    SET [email protected]_UNIQUE_CHECKS; 

답변

0

이것은 외래 키 오류입니다. 삽입하려는 테이블 또는 데이터가 일부 외래 키 제약 조건을 위반하고 있음을 의미합니다.

참조 : 일반적으로이, mysqldump는의도 이전 버전을 올바르게 외래 키를 덤프하는 방법을 알고하지 않거나 타사 프로그램에 의해 SQL 덤프 createde의 ither를 사용하여 발생 http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html

.

MySQL 5.5 또는 5.6 클라이언트를 다운로드하고 데이터베이스를 처음부터 mysqldump하십시오.

SQL 파일을 다시 정렬하여 ASSIGN 테이블 앞에 PRODUCT 테이블을 만들면 작동하게 할 수도 있습니다.

0

이 문제는 하나 이상의 외래 키가 같은 이름을 갖고 있기 때문에 발생합니다! Workbench에서 FK가있는 테이블을 선택한 후 외래 키로 이동하고 외래 키의 이름을 변경하십시오 (컬럼 이름이 아닌 FK 이름 만). 예 : FK 열 이름 : idUser. FK 이름 : idUser. 이 테이블의 FK 이름을 idUserA로 변경하십시오. idUser를 FK로 사용하는 다른 테이블에서 FK의 이름을 idUserB로 변경하십시오. 확인 하시겠습니까?

나를 이해할 수 있기를 바랍니다. =)