![](/img/trans.png)
[英]MySQL create table: error 1005 errno: 150 “Foreign key constraint is incorrectly formed”
[英]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),
或者根据您的要求,您必须更改模型以适合您的需求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.