私のシステムのデータベースとテーブルを構築しようとしています。しかし、コードに外部キーを追加しないと、私はそれを発見しました。エラーはありません。私はコードを動作させるために多くのメソッドを試しましたが、それでもエラーがあります。MySQLの外部キー、テーブルを作成できません(エラー番号:150)
私は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 - Can't create table 'TOS.BILL_ITEM' (errno: 150)
任意の助けいただければ幸いです。
'DROP'文を削除すると動作するようです。http://sqlfiddle.com/#!2/08d1e –
通常、データ型と長さの不一致により、エラー150が外部キーエラーです列とリレーションの間、またはプライマリ列の欠落したインデックス。あなたはすべての正しいタイプとPKインデックスが定義されています。 –
問題を絞り込むために外部キーの1つだけを削除しようとしますか? –