2016-04-11 45 views
0

モデルを作成し、インポートのためにSQLテキストにフォワードエンジニアリングしました。私は既存の接続へのデータのインポートを開始すると、私は次のエラーが表示され、MySQLデータのインポート - 外部キー制約エラーを追加できません。

ERROR 1215 (HY000) at line 76: Cannot add foreign key constraint 

私は親のデータ型とエラーがから来ている子となどが、わからないためにチェックしました。.. MySQLの5.7

とMySQLWorkbench 6.3を使用して

  • ライン76は、

    CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`Expense` (
        `idExpense` INT NOT NULL, 
        `Date` DATETIME NULL, 
        `Description` VARCHAR(100) NULL, 
        `Amount` DOUBLE NULL, 
        `Billable` TINYINT(1) NULL, 
        `Job_idJob` INT NOT NULL, 
        `Job_idClient` INT NOT NULL, 
        `Task_idTask` INT NOT NULL, 
        PRIMARY KEY (`idExpense`), 
        INDEX `fk_Expense_Job1_idx` (`Job_idJob` ASC, `Job_idClient` ASC), 
        INDEX `fk_Expense_Task1_idx` (`Task_idTask` ASC), 
        CONSTRAINT `fk_Expense_Job1` 
        FOREIGN KEY (`Job_idJob` , `Job_idClient`) 
        REFERENCES `CostTrackerDB`.`Job` (`idJob` , `Client_idClient`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION, 
        CONSTRAINT `fk_Expense_Task1` 
        FOREIGN KEY (`Task_idTask`) 
        REFERENCES `CostTrackerDB`.`Task` (`idTask`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 
    
    次抽出物の始まりです

    全体のSQLテキスト、

    -- MySQL Script generated by MySQL Workbench 
    -- 04/11/16 12:31:19 
    -- Model: New Model Version: 1.0 
    -- MySQL Workbench Forward Engineering 
    
    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 CostTrackerDB 
    -- ----------------------------------------------------- 
    
    -- ----------------------------------------------------- 
    -- Schema CostTrackerDB 
    -- ----------------------------------------------------- 
    CREATE SCHEMA IF NOT EXISTS `CostTrackerDB` DEFAULT CHARACTER SET utf8 ; 
    USE `CostTrackerDB` ; 
    
    -- ----------------------------------------------------- 
    -- Table `CostTrackerDB`.`Staff` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`Staff` (
        `idStaff` INT NOT NULL, 
        `Name` VARCHAR(45) NULL, 
        `Role` VARCHAR(45) NULL, 
        PRIMARY KEY (`idStaff`)) 
    ENGINE = InnoDB; 
    
    
    -- ----------------------------------------------------- 
    -- Table `CostTrackerDB`.`Client` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`Client` (
        `idClient` INT NOT NULL, 
        `name` VARCHAR(45) NULL, 
        PRIMARY KEY (`idClient`)) 
    ENGINE = InnoDB; 
    
    
    -- ----------------------------------------------------- 
    -- Table `CostTrackerDB`.`Job` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`Job` (
        `idJob` INT NOT NULL, 
        `Number` VARCHAR(45) NULL, 
        `Title` VARCHAR(100) NULL, 
        `State` VARCHAR(45) NULL, 
        `Start` DATETIME NULL, 
        `Due` DATETIME NULL, 
        `Client_idClient` INT NOT NULL, 
        PRIMARY KEY (`idJob`), 
        INDEX `fk_Job_Client1_idx` (`Client_idClient` ASC), 
        CONSTRAINT `fk_Job_Client1` 
        FOREIGN KEY (`Client_idClient`) 
        REFERENCES `CostTrackerDB`.`Client` (`idClient`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 
    
    
    -- ----------------------------------------------------- 
    -- Table `CostTrackerDB`.`Task` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`Task` (
        `idTask` INT NOT NULL, 
        `Title` VARCHAR(100) NULL, 
        `idStaff` INT NULL, 
        PRIMARY KEY (`idTask`)) 
    ENGINE = InnoDB; 
    
    
    -- ----------------------------------------------------- 
    -- Table `CostTrackerDB`.`Expense` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`Expense` (
        `idExpense` INT NOT NULL, 
        `Date` DATETIME NULL, 
        `Description` VARCHAR(100) NULL, 
        `Amount` DOUBLE NULL, 
        `Billable` TINYINT(1) NULL, 
        `Job_idJob` INT NOT NULL, 
        `Job_idClient` INT NOT NULL, 
        `Task_idTask` INT NOT NULL, 
        PRIMARY KEY (`idExpense`), 
        INDEX `fk_Expense_Job1_idx` (`Job_idJob` ASC, `Job_idClient` ASC), 
        INDEX `fk_Expense_Task1_idx` (`Task_idTask` ASC), 
        CONSTRAINT `fk_Expense_Job1` 
        FOREIGN KEY (`Job_idJob` , `Job_idClient`) 
        REFERENCES `CostTrackerDB`.`Job` (`idJob` , `Client_idClient`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION, 
        CONSTRAINT `fk_Expense_Task1` 
        FOREIGN KEY (`Task_idTask`) 
        REFERENCES `CostTrackerDB`.`Task` (`idTask`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 
    
    
    -- ----------------------------------------------------- 
    -- Table `CostTrackerDB`.`StaffAllocation` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`StaffAllocation` (
        `Job_idJob` INT NOT NULL, 
        `Staff_idStaff` INT NOT NULL, 
        `Task_idTask` INT NOT NULL, 
        `Rate` DOUBLE NULL, 
        `Role` VARCHAR(45) NULL, 
        `Hours` DOUBLE NULL, 
        `Week` DATETIME NULL, 
        PRIMARY KEY (`Job_idJob`, `Staff_idStaff`, `Task_idTask`), 
        INDEX `fk_Job_has_Staff_Staff1_idx` (`Staff_idStaff` ASC), 
        INDEX `fk_Job_has_Staff_Job1_idx` (`Job_idJob` ASC), 
        INDEX `fk_StaffAllocation_Task1_idx` (`Task_idTask` ASC), 
        CONSTRAINT `fk_Job_has_Staff_Job1` 
        FOREIGN KEY (`Job_idJob`) 
        REFERENCES `CostTrackerDB`.`Job` (`idJob`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION, 
        CONSTRAINT `fk_Job_has_Staff_Staff1` 
        FOREIGN KEY (`Staff_idStaff`) 
        REFERENCES `CostTrackerDB`.`Staff` (`idStaff`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION, 
        CONSTRAINT `fk_StaffAllocation_Task1` 
        FOREIGN KEY (`Task_idTask`) 
        REFERENCES `CostTrackerDB`.`Task` (`idTask`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 
    
    
    -- ----------------------------------------------------- 
    -- Table `CostTrackerDB`.`Timesheet` 
    -- ----------------------------------------------------- 
    CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`Timesheet` (
        `Task_idTask` INT NOT NULL, 
        `Staff_idStaff` INT NOT NULL, 
        `Time` DATETIME NULL, 
        `Billable` TINYINT(1) NULL, 
        `hours` DATETIME NULL, 
        PRIMARY KEY (`Task_idTask`, `Staff_idStaff`), 
        INDEX `fk_Task_has_Staff_Staff1_idx` (`Staff_idStaff` ASC), 
        INDEX `fk_Task_has_Staff_Task1_idx` (`Task_idTask` ASC), 
        CONSTRAINT `fk_Task_has_Staff_Task1` 
        FOREIGN KEY (`Task_idTask`) 
        REFERENCES `CostTrackerDB`.`Task` (`idTask`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION, 
        CONSTRAINT `fk_Task_has_Staff_Staff1` 
        FOREIGN KEY (`Staff_idStaff`) 
        REFERENCES `CostTrackerDB`.`Staff` (`idStaff`) 
        ON DELETE NO ACTION 
        ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 
    
    
    SET [email protected]_SQL_MODE; 
    SET [email protected]_FOREIGN_KEY_CHECKS; 
    SET [email protected]_UNIQUE_CHECKS; 
    

答えて

0

試してみてください。

CREATE TABLE IF NOT EXISTS `CostTrackerDB`.`Expense` (
    `idExpense` INT NOT NULL, 
    `Date` DATETIME NULL, 
    `Description` VARCHAR(100) NULL, 
    `Amount` DOUBLE NULL, 
    `Billable` TINYINT(1) NULL, 
    `Job_idJob` INT NOT NULL, 
    `Job_idClient` INT NOT NULL, 
    `Task_idTask` INT NOT NULL, 
    PRIMARY KEY (`idExpense`), 
    INDEX `fk_Expense_Job1_idx` (`Job_idJob` ASC, `Job_idClient` ASC), 
    INDEX `fk_Expense_Task1_idx` (`Task_idTask` ASC), 
    /*CONSTRAINT `fk_Expense_Job1` 
    FOREIGN KEY (`Job_idJob` , `Job_idClient`) 
    REFERENCES `CostTrackerDB`.`Job` (`idJob` , `Client_idClient`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION,*/ 
    CONSTRAINT `fk_Expense_Job1` 
    FOREIGN KEY (`Job_idJob`) 
    REFERENCES `CostTrackerDB`.`Job` (`idJob`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_Expense_Job2` 
    FOREIGN KEY (`Job_idClient`) 
    REFERENCES `CostTrackerDB`.`Job` (`Client_idClient`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `fk_Expense_Task1` 
    FOREIGN KEY (`Task_idTask`) 
    REFERENCES `CostTrackerDB`.`Task` (`idTask`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 
+0

感謝!魅力のように働く。 – lukieleetronic

関連する問題