2014-05-22 103 views
-1

我不明白這一點。有人可以在這裏解釋我的失敗:MySQL不能寫 - 重複鍵

CREATE TABLE IF NOT EXISTS `mytable`.`Employee_Service` (
    `Employee_Service_Id` INT NOT NULL, 
    `Created_At` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, 
    `Updated_At` TIMESTAMP NULL, 
    PRIMARY KEY (`Employee_Service_Id`), 
    CONSTRAINT `Employee` 
    FOREIGN KEY (`Employee_Service_Id`) 
    REFERENCES `mytable`.`Employees` (`Employee_Id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Service` 
    FOREIGN KEY (`Employee_Service_Id`) 
    REFERENCES `mytable`.`Services` (`Service_Id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 

日誌文件說:

Error 1022: Can't write; duplicate key in table 'employee_service' 

明白我想,這樣做: 表「Employee_Service」表之間的連接「員工「和」服務「。在該表中,我想存儲「Employees」表中的「Employee_Id」,並將其與「Services」表中的「Service_Id」連接起來。所以我可以得到一個員工有服務的關係。 但是我的桌子有什麼問題,尤其是前面的鍵?

+0

檢查其他表看到,如果你已經使用了相同的約束名字'Employee'或'Service'。 – Barmar

回答

1

最有可能你的其它表已同約束命名EmployeeService。您發佈CREATE聲明的另一個問題,你正試圖使Employee_Service_Id既是PKFK

PRIMARY KEY (`Employee_Service_Id`), 
    CONSTRAINT `Employee` 
    FOREIGN KEY (`Employee_Service_Id`) 
+0

好的,我會檢查這個。但是這些語句的名稱是由MySQL Workbench完成的。或者我可以爲自己改變它嗎? – Tipo

+0

@Tipo,是的,你可以。做嘗試,如果成功,接受答案。 – Rahul

+0

太棒了!只有一個其他表使用相同的外鍵名稱。這真的很有趣。我從11年來創建了許多數據庫,並從來沒有這樣的問題。滑稽! – Tipo