시스템의 데이터베이스와 테이블을 구축하려고합니다. 하지만 코드에 외래 키를 추가하지 않으면 발견했습니다. 오류가 없습니다. 나는 코드를 작동 시키려고 많은 방법을 사용해 왔지만 여전히 오류가있다.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 인덱스를 모두 정의했습니다. –
문제를 좁히기 위해 외래 키 중 하나만 제거하려고 할 수 있습니까? –