2012-05-05 76 views
2

我在MySQL Workbench中用EER圖表製作了8個表。現在我使用該程序的建議SQL來創建表。它適用於大多數人,但不包括包含外鍵的人。有誰知道如何解決這個問題?這裏是建議的代碼和錯誤消息。MySQL Workbench中的外鍵

SQL語句:

CREATE TABLE IF NOT EXISTS `webprogrammering`.`Deltagelse` (
    `deltagelseNr` INT NOT NULL AUTO_INCREMENT , 
    `deltagerNr` INT NOT NULL , 
    `Arrid` INT NOT NULL , 
    PRIMARY KEY (`deltagelseNr`) , 
    INDEX `deltagerNr`() , 
    INDEX `Arrid`() , 
    CONSTRAINT `deltagerNr` 
    FOREIGN KEY() 
    REFERENCES `webprogrammering`.`deltagere`() 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Arrid` 
    FOREIGN KEY() 
    REFERENCES `webprogrammering`.`arrangement`() 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 

錯誤信息LOG:

錯誤1064:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法使用附近的手冊「),INDEX Arrid(), 約束deltagerNr 外鍵() 參考,」第6行

+0

似乎MySQL Workbench會生成無效的SQL。看到這篇文章的解釋:http://stackoverflow.com/questions/10430272/innodb-does-not-accept-foreign-key/10430312#10430312 –

回答

0
CREATE TABLE IF NOT EXISTS `webprogrammering`.`Deltagelse` (
    `deltagelseNr` INT NOT NULL AUTO_INCREMENT , 
    `deltagerNr` INT NOT NULL , 
    `Arrid` INT NOT NULL , 
    PRIMARY KEY (`deltagelseNr`) , 
    INDEX `deltagerNrIdx` (deltagerNr) , 
    INDEX `ArridIdx` (Arrid) , 
    CONSTRAINT `deltagerNr_fk` 
    FOREIGN KEY (deltagerNr) 
    REFERENCES `webprogrammering`.`deltagere` (referenceField) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION, 
    CONSTRAINT `Arrid_fk` 
    FOREIGN KEY (Arrid) 
    REFERENCES `webprogrammering`.`arrangement` (referenceField2) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB 

變化領域名稱referenceField,referenceField2來更正名稱。