Mysql 如何从复合密钥生成外键?

Mysql 如何从复合密钥生成外键?,mysql,ddl,Mysql,Ddl,我想从主键生成外键,但出现错误“#1005-无法创建表” 这是使用的DDL CREATE TABLE Invoice ( InvoiceID SMALLINT, TaskID SMALLINT, FOREIGN KEY Invoice(InvoiceID) REFERENCES XTABLE(InvoiceID), PRIMARY KEY (InvoiceID, TaskID) ); 确保XTABLE和Invoice中的键列标记为主键和非空 CREATE TABLE XTABLE(Invoic

我想从主键生成外键,但出现错误“#1005-无法创建表”

这是使用的DDL

CREATE TABLE Invoice
(
InvoiceID SMALLINT,
TaskID SMALLINT,
FOREIGN KEY Invoice(InvoiceID) REFERENCES XTABLE(InvoiceID),
PRIMARY KEY (InvoiceID, TaskID)
);

确保
XTABLE
Invoice
中的键列标记为
主键
非空

CREATE TABLE XTABLE(InvoiceID SMALLINT NOT NULL, PRIMARY KEY(InvoiceID));

CREATE TABLE Invoice ( 
  InvoiceID SMALLINT NOT NULL, 
  TaskID SMALLINT NOT NULL,
  PRIMARY KEY (InvoiceID, TaskID),
  CONSTRAINT FOREIGN KEY Invoice(InvoiceID) REFERENCES XTABLE(InvoiceID)
);

SQL FIDDLE:

这是整个错误消息吗?您是否尝试了外键InoviceID而不是外键发票(InvoiceID)?或者在InvoiceID SMALLINT之后直接写入引用XTABLE(InvoiceID)?Show
CREATE TABLE XTABLE…
问题标题提到了一个复合键,但外键只使用了一列:
InvoiceID
:-?