繁体   English   中英

MySQL错误1005错误150错误地形成了外键约束

[英]MySQL error 1005 errno 150 Foreign key constraint is incorrectly formed

我创建了以下表格:

停止:

CREATE TABLE Stop (  
 routeNo        DECIMAL (4,0) UNSIGNED,  
 stopNo         DECIMAL(3,0) UNSIGNED,  
 latitude       DECIMAL(19,16),  
 longitude      DECIMAL(19,16),  
 CONSTRAINT PK_Location PRIMARY KEY (routeNo, stopNo),  
 CONSTRAINT FK_stop_location FOREIGN KEY (latitude,longitude) REFERENCES Location(latitude,longitude),  
 CONSTRAINT FK_stop_route FOREIGN KEY (routeNo) REFERENCES Route(routeNo)  
);  

和表WorkDay:

CREATE TABLE Workday (
 theDate    DATE    PRIMARY KEY,
 notes  VARCHAR(30)
);  

然后,我尝试使用以下代码创建表Order Delivery:

CREATE TABLE OrderDelivery 
(
 routeNo DECIMAL(4,0) UNSIGNED,
 stopNO DECIMAL(3,0) UNSIGNED, 
 orderNo INT(9),
 CONSTRAINT pk_Orders PRIMARY KEY (routeNo, stopNo, orderNo),
 deliveryDateExpected DATE, 
 deliveryTime TIME,
 customerName VARCHAR(40),
 creditCardNo CHAR(16) NOT NULL,
 customerRanking ENUM('platinum','gold','occasional','one-off'),
 CONSTRAINT fk_Routes FOREIGN KEY (routeNo) REFERENCES Stop(routeNo),
 CONSTRAINT fk_Stops FOREIGN KEY (stopNo) REFERENCES Stop(stopNo),   
 CONSTRAINT fk_Dates FOREIGN KEY (deliveryDateExpected) REFERENCES Workday(theDate)
);

但是,每次我尝试创建OrderDelivery表时,都会出现错误,指出外键格式不正确

"SQL Error (1005): Can't create table 'harry.OrderDelivery' (errno:150)Foreign key constraint is incorrectly formed"

我该如何纠正?

您无法为具有多个主键的表创建外键,该主键仅引用该主键的一个字段。

因此,您的问题出在这里:

CONSTRAINT fk_Routes FOREIGN KEY (routeNo) REFERENCES Stop(routeNo),
CONSTRAINT fk_Stops FOREIGN KEY (stopNo) REFERENCES Stop(stopNo),  

您应该将其更改为

 CONSTRAINT fk_Stops_Routes 
    FOREIGN KEY (routeNo, stopNo) 
    REFERENCES Stop(routeNo, stopNo),

或者根据您的要求,您必须更改模型以适合您的需求。

Laravel 6

[英]MySQL (errno: 150 “Foreign key constraint is incorrectly formed”)") on Laravel 6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM