2013-04-17 217 views
2

我一直在嘗試使用heidisql添加一個外鍵到我的表,我不斷收到錯誤1452試圖在mysql中添加外鍵與heidisql

閱讀各地後,我確信我所有的表都運行InnoDB以及檢查它們是否具有相同的數據類型,並且我可以添加我的密鑰的唯一方法是,如果我放棄了我不打算執行的所有數據,因爲我已花了幾個小時來處理這些數據。

這裏是我的表創建代碼:

CREATE TABLE `data` (
`ID` INT(10) NOT NULL AUTO_INCREMENT, 
#bunch of random other columns stripped out 
`Ability_1` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0', 
#more stripped tables 
`Extra_Info` SET('1','2','3','Final','Legendary') NOT NULL DEFAULT '1' COLLATE 'utf8_unicode_ci', 
PRIMARY KEY (`ID`), 
UNIQUE INDEX `ID` (`ID`) 
) 
COLLATE='utf8_unicode_ci' 
ENGINE=InnoDB 
AUTO_INCREMENT=650; 

這裏是表2

CREATE TABLE `ability` (
`ability_ID` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, 
#stripped columns 
`Name_English` VARCHAR(12) NOT NULL COLLATE 'utf8_unicode_ci', 
PRIMARY KEY (`ability_ID`), 
UNIQUE INDEX `ability_ID` (`ability_ID`) 
) 
COLLATE='utf8_unicode_ci' 
ENGINE=InnoDB 
AUTO_INCREMENT=165; 

最後在這裏是有錯誤沿創建代碼。

ALTER TABLE `data` 
ADD CONSTRAINT `Ability_1` FOREIGN KEY (`Ability_1`) REFERENCES `ability` (`ability_ID`) ON UPDATE CASCADE ON DELETE CASCADE; 
/* SQL Error (1452): Cannot add or update a child row: a foreign key constraint fails (`check`.`#sql-ec0_2`, CONSTRAINT `Ability_1` FOREIGN KEY (`Ability_1`) REFERENCES `ability` (`ability_ID`) ON DELETE CASCADE ON UPDATE CASCADE) */ 

如果還有什麼我可以提供的,請讓我知道這真的是困擾我。我還使用了xampp安裝程序附帶的5.5.27 - MySQL社區服務器(GPL)。

回答

0

我找到了。對不起大家。問題是,我有0作爲我的字段的默認值,而我原來的表沒有價值0

0

enter image description here

如果您正在使用HeidiSQL它是很容易的。

只需查看圖像,請單擊+添加以添加外鍵。

我更喜歡GUI創建表及其屬性的方式,因爲它節省了時間並減少了錯誤。