【发布时间】:2013-12-08 14:45:30
【问题描述】:
我正在尝试为我的系统构建数据库和表。但是我发现如果我不在代码中添加外键。没有错误。我使用了很多方法尝试使代码正常工作,但仍然有错误。
我使用的是 MySQL 5.5.31,这里的代码: 创建数据库服务条款;
DROP TABLE TOS.USER CASCADE;
DROP TABLE TOS.BILL_HEADER CASCADE;
DROP TABLE TOS.TOY CASCADE;
CREATE TABLE TOS.USER
(User Char(8),
Name Char(10),
Type Char(1),
Password Char(12),
PRIMARY KEY(User));
CREATE TABLE TOS.BILL_HEADER
(Bill_No Char(10),
CTime DateTime,
No_Of INTEGER,
Cus_No Char(5),
DTime DateTime,
PRIMARY KEY(Bill_No));
CREATE TABLE TOS.TOY
(Toy_Id Char(10),
FullN Char(50),
ShortN Char(20),
Descrip Char(20),
Price DECIMAL,
Avail Char(1),
Cat Char(1),
PRIMARY KEY(Toy_Id));
CREATE TABLE TOS.BILL_ITEM
(Bill_No Char(10),
BSeq_No INTEGER,
Toy_Id Char(10),
OTime DateTime,
Quan INT,
DCondition Char(1),
PRIMARY KEY(Bill_No,BSeq_No),
FOREIGN KEY(Bill_No) REFERENCES TOS.Bill_Header(Bill_No),
FOREIGN KEY(Toy_Id) REFERENCES TOS.TOY(Toy_Id));
错误:
1005 - 无法创建表“TOS.BILL_ITEM”(错误号:150)
任何帮助将不胜感激。
【问题讨论】:
-
如果我删除
DROP语句,它似乎确实有效.. sqlfiddle.com/#!2/08d1e -
通常,err 150 是外键错误,原因是列和关系之间的数据类型和长度不匹配,或者主列上缺少索引。不过,您确实定义了所有正确的类型和 PK 索引。
-
您能否尝试仅删除一个外键来缩小问题范围?
标签: mysql foreign-keys mysql-error-1005