2014-09-23 87 views
1

根據我的理解,在閱讀相關的SO答案和官方文檔後,我可能會遇到列類型不匹配情況或缺少定義所需的INDEX情況。但是我無法解決我的問題。MySQL 5.0.11錯誤代碼#1215:無法添加外鍵約束

下面的表被成功創建下面

CREATE TABLE `parts` (
`partnum_rev` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part number with revision number', 
`status` char(4) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part is live or dead', 
`partdef` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part definition', 
`makebuy` varchar(4) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part is maked or buyed', 
PRIMARY KEY (`partnum_rev`), 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='table that part specific data is hold' 

表給出MySQL - Error Code 1215, cannot add foreign key constraint

partnum_revparts表的主鍵,所以我不明白我的理由。

你能幫助我嗎?

問候

CREATE TABLE `bom` (
`lcn` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'logistics control number', 
`status` char(4) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part is live or dead', 
`partnum_rev` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'part number with revision number', 
`effective_date` date NOT NULL COMMENT 'drawing effective date', 
`abolish_date` date DEFAULT NULL COMMENT 'drawing abolish date', 
`parent_partnum_rev` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT 'parent part number with revision number', 
`bomlevel` tinyint(3) unsigned NOT NULL COMMENT 'bom level', 
`quantity` decimal NOT NULL COMMENT 'quantity', 
`quantity_unit` char(2) COLLATE utf8_unicode_ci NOT NULL COMMENT 'quantity unit', 
`usage_ratio` decimal DEFAULT NULL COMMENT 'usage ratio', 
`mttr` decimal DEFAULT NULL COMMENT 'mean time to repair', 
`purchasecost` decimal unsigned DEFAULT NULL COMMENT 'purchasing cost', 
`moneyunit` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'purchasing cost monetary unit', 
PRIMARY KEY (`lcn`), 
FOREIGN KEY (`partnum_rev`) REFERENCES part(`partnum_rev`) ON UPDATE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='table for bill of material' 

回答

2

foreign key條款是錯誤的 - 你的表稱爲parts(多!),不part。只要使用正確的表名:

FOREIGN KEY (`partnum_rev`) REFERENCES parts(`partnum_rev`) ON UPDATE CASCADE 
1

它看起來你有,你在錯過了一個「S」一個錯字。請嘗試以下行:

FOREIGN KEY (`partnum_rev`) REFERENCES parts(`partnum_rev`) ON UPDATE CASCADE 
0

小時後,瞬間我觀察,我在表名部分(小號)上FOREIGN KEY ( partnum_rev ) REFERENCES part( partnum_rev ) ON UPDATE CASCADE行錯過了一個s

對不起,因爲一個愚蠢的語法錯誤而煩惱。

不好意思。

相關問題