2014-11-20 99 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) 
); 

您还必须为多列主键指定名称。为什么你会希望所有这些列作为关键是一个谜。