我想建立我的系統的數據庫和表。但是我發現如果我不在代碼中添加外鍵。沒有錯誤。我使用了很多方法試圖使代碼有效,但它仍然有錯誤。MySQL的外鍵,不能創建表(errno:150)
我使用的是MySQL 5.5.31,代碼如下: CREATE DATABASE TOS;
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 - Can't create table 'TOS.BILL_ITEM' (errno: 150)
任何幫助將不勝感激。
它似乎工作,如果我刪除'DROP'語句.. http://sqlfiddle.com/#!2/08d1e –
通常,錯誤150是外鍵錯誤,由於數據類型和長度不匹配列與關係之間或主列上缺少索引。你確實擁有所有正確的類型和PK索引。 –
您可以嘗試只刪除其中一個外鍵以縮小問題範圍嗎? –