错误代码1215:无法添加外键约束?

时间:2017-05-25 03:04:08

标签: mysql foreign-keys

我正在使用SQL进行分配,并尝试在引用total表的donuts表上添加外键。

我的代码:

CREATE TABLE DONUTS (
DonutID integer not null unique,
Donut_name varchar(35) not null,
Description varchar(35) not null,
Donut_Qty integer not null, 
Donut_price decimal not null,
PRIMARY KEY(DonutID, Donut_Qty, Donut_price));

CREATE TABLE TOTAL (
LINE_TOTAL Decimal NOT NULL UNIQUE,
Donut_Qty integer NOT NULL,
Donut_price decimal NOT NULL,
PRIMARY KEY (LINE_TOTAL),
FOREIGN KEY (Donut_Qty) REFERENCES donuts(Donut_Qty),
FOREIGN KEY (Donut_price) REFERENCES donuts(Donut_price));

我收到此错误:

  

错误代码1215:无法添加外键约束

我检查过数据库引擎是否相同,字符集和数据类型。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

CREATE TABLE DONUTS (
    DonutID integer not null unique,
    Donut_name varchar(35) not null,
    Description varchar(35) not null,
    Donut_Qty integer not null, 
    Donut_price decimal not null,
    PRIMARY KEY(DonutID, Donut_Qty, Donut_price)
);    

CREATE TABLE TOTAL (
    LINE_TOTAL Decimal NOT NULL UNIQUE,
    DonutID integer not null, Donut_Qty integer NOT NULL,
    Donut_price decimal NOT NULL, PRIMARY KEY (LINE_TOTAL),
    FOREIGN KEY (DonutID, Donut_Qty, Donut_price) REFERENCES DONUTS(DonutID, Donut_Qty, Donut_price)
);

DONUTS表中的复合主键有三个字段:DonutID,Donut_Qty,Donut_price。构成组合键的三个字段假定在TOTAL表中引用。

答案 1 :(得分:0)

  

Mysql在任何列上都需要显式的唯一键(或主键)   在另一个表中引用为外键。

请参阅此link

您提供的non primary keyforeign key,但无效。