2014-11-20 96 views
0

我試圖通過MySQL中的外鍵將兩個錶鏈接在一起。 CLIENTS表應該通過Client ID屬性鏈接到另一個表(BIDS)。在MySQL中創建外鍵

CREATE TABLE CLIENTS (
CLIENTID   NUMERIC(3) NOT NULL, 
FOREIGN KEY(CLIENTID) REFERENCES BIDS(CLIENTID), 
PRIMARY KEY(CLIENTID, EMAILADDRESSES,PHONENUMBERS,CONTACTS) 
); 

但是,當我嘗試執行代碼時,MySQL返回此錯誤。

#1005 - 無法創建表'客戶(錯誤:150)

它似乎不是一個語法錯誤,所以沒有人知道是什麼引起的問題,或者如何我修復它?

+0

可能的重複[MySQL使用外鍵創建表給出errno:150](http://stackoverflow.com/questions/1457305/mysql-creating-tables-with-foreign-keys-giving-errno-150) – 2014-11-20 18:44:27

+0

您的示例對我來說看起來不完整:如果表中沒有這些列,您如何將列「EMAILADDRESSES」,「PHONENUMBERS」,「CONTACTS」放入主鍵中? – 2014-11-20 18:47:09

+0

BIDS(CLIENTID)的數據類型是什麼? errno 150最常見的原因是FK的數據類型與它所引用的PK的數據類型不匹配。 – 2014-11-20 19:15:00

回答

1

當使用他們在查詢中指定的多個列具有主鍵創建表 -

CREATE TABLE CLIENTS (
CLIENTID NUMERIC(3) NOT NULL, 
EMAILADDRESSES CHAR(64), 
PHONENUMBERS VARCHAR(16), 
CONTACTS VARCHAR(32), 
FOREIGN KEY(CLIENTID) REFERENCES BIDS(CLIENTID), 
CONSTRAINT key_name PRIMARY KEY(CLIENTID, EMAILADDRESSES,PHONENUMBERS,CONTACTS) 
); 

您還必須爲多列主鍵指定名稱。爲什麼你會希望所有這些列作爲關鍵是一個謎。