您好,匿名用户
随意问技术百科期待您的加入

MySQL FOREIGN KEY 约束报错:Can't create table 'outlook.orders' (errno: 150)

0 投票

首先在我本机,和一台linux服务器上执行了一下同样的SQL都是 Can't create table 'outlook.orders' (errno: 150) 这个错误

软件版本: 5.5.25a - MySQL Community Serve (本机用了XAMPP,linux服务器是编译版本) 均启用innoDB。

我用

CREATE TABLE Persons (
    Id_P SERIAL PRIMARY KEY NOT NULL,
    Name varchar(255)
)

创建了Persons表
在 "Orders" 表创建时为 "Id_P" 列创建 FOREIGN KEY到Persons的Id_P:

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (O_Id),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

在看书的时候遇到了这个问题,原文使用的是postgreSQL,我换成了MySQL。对SQL语句还不慎了解,不知道上面的语法是否有错误?,但执行时未发现syntax报错,只有在使用FOREIGN KEY语句的时候无法通过,报错Can't create table 'outlook.orders' (errno: 150)问题:(

谢谢:)

用户头像 提问 2012年 12月1日 @ Corki 上等兵 (263 威望)
分享到:

1个回答

0 投票
 
最佳答案
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
Id_P SERIAL,
PRIMARY KEY (O_Id),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
);

Id_P的类型必须跟Persons中的一致。

用户头像 回复 2012年 12月1日 @ Gangplank 上等兵 (314 威望)
选中 2012年 12月1日 @Corki
提一个问题:

相关问题

0 投票
0 回复 7 阅读
用户头像 提问 2014年 3月19日 @ Morgana 上等兵 (251 威望)
0 投票
1 回复 45 阅读
0 投票
0 回复 66 阅读
用户头像 提问 2013年 10月3日 @ 苏尐沫 上等兵 (212 威望)
0 投票
1 回复 42 阅读
用户头像 提问 2013年 11月6日 @ Ahri 上等兵 (292 威望)
0 投票
1 回复 27 阅读
用户头像 提问 2013年 11月15日 @ Karthus 上等兵 (227 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...