2016-04-11 41 views
0

Bir model oluşturdum ve içe aktarma için SQL metnine ilettim. Mevcut bir bağlantı veri alma başlattığınızda, ben şu hatayı,MySQL Verileri İçe Aktarma - Yabancı anahtar kısıtlaması hatası eklenemiyor,

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

hata geliyor ebeveynin veri tipi ve çocuk ve vb ama emin değilim kontrol ettiğim almak .. 5,7

Hat 76, aşağıdaki alıntıda başlangıcı MySQL MySQLWorkbench 6.3 kullanarak

  • ,

    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; 
    

    Tüm SQL Metin,

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

cevap

0

Dene:

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

teşekkürler! ÇALIŞIYOR bir cazibe gibi. – lukieleetronic

İlgili konular