2012-03-22 71 views
0

好吧,我明白的問題是什麼,我有點明白約束,他們必須在數據庫中唯一的(真的不知道在這之前,所以我學到了一些東西,不知道他們現在在做什麼,但可以在以後學習。我的問題是,我認爲不瞭解MySQL Workbench如何分配約束的一個簡單問題。顯然,您可以將它設置爲選項如此自動,我認爲我的設置做的做,但是東西,因爲它們使用了相同的FK,我也做了很多的限制是相同的,這裏是我的意思的例子: 表1:MySQL工作臺,新手DB,約束問題 - 錯誤1005,ERNO 121

CONSTRAINT `dish_type` 
    FOREIGN KEY (`dish_type`) 
    REFERENCES `acs_operations_dev`.`dish_types` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE CASCADE, 
    CONSTRAINT `tech_number` 
    FOREIGN KEY (`tech_number`) 
    REFERENCES `acs_operations_dev`.`employees` (`tech_number`) 
    ON DELETE NO ACTION 
    ON UPDATE CASCADE) 

表2

PRIMARY KEY (`id`) , 
    INDEX `tech_number` (`tech_number` ASC) , 
    INDEX `car` (`car` ASC) , 
    INDEX `field_dev_coach` (`field_dev_coach` ASC) , 
    UNIQUE INDEX `etad_user_UNIQUE` (`etad_user` ASC) , 
    CONSTRAINT `tech_number` 
    FOREIGN KEY (`tech_number`) 
    REFERENCES `acs_operations_dev`.`employees` (`tech_number`) 
    ON DELETE NO ACTION 
    ON UPDATE CASCADE, 
    CONSTRAINT `car` 
    FOREIGN KEY (`car`) 
    REFERENCES `acs_operations_dev`.`cars` (`id`) 
    ON DELETE NO ACTION 
    ON UPDATE CASCADE, 

我留下了一些地方 - 只是想說明問題 - 即在tech_number。

我在模型頁面上手動創建了表格(即,我沒有使用EER「繪圖」風格)。當我創建了FKS,這裏是我做了什麼:

MySQL Workbench - FK Creation Example

它是什麼,我在這裏做什麼是導致WB不自動分配的約束?另外,我可以做些什麼來回到WB中修復它。

我希望這是有道理的。我用這種方法爲每個表,順便說一句 - 所以它是一致的。謝謝!

邁克

+0

什麼是您得到的完整錯誤? – 2012-03-23 07:07:01

回答

1
  1. 檢查表是InnoDB的

  2. 檢查外鍵的列具有相同的數據類型。如果您正在使用整數列,請檢查兩者是未簽名還是已簽名。

  3. 檢查他們必須解開的外鍵名稱。我通常使用以下fromat fk_currenttablename_foreignkeytablename