2012-12-16 3 views
0

나는 몇 가지 문제가 내가 다음 코드에 대한 MySQL의 코드 오류 150납니다 이유를 이해하는 데 :외부 키 테이블 만들 수 없습니다 - MySQL의 오류 150

-- Exercise Categories 
CREATE TABLE Exercise_cat 
(
ec_id  INT NOT NULL AUTO_INCREMENT, 
name  VARCHAR(25), 
PRIMARY KEY (ec_id) 
); 
-- This inserts fine 

-- Exercise Descriptions 
CREATE TABLE Exercise_desc 
(
e_id  INT NOT NULL AUTO_INCREMENT, 
name  VARCHAR(25), 
ec_id  INT NOT NULL, 
cal_per_hour INT NOT NULL, 
PRIMARY KEY (e_id), 
FOREIGN KEY (ec_id) REFERENCES Excercise_cat(ec_id) 
); 
-- ERROR (foreign key constraint not formed) 

내가 오프 떠나지 않았어요을 열 이름은 [1][2]과 같습니다.
MySQL에서 세미콜론을 사용하고 싶습니다.

외래 키를 수정하여 테이블을 만들 수있는 방법은 무엇입니까?

+0

외래 키에 오타가 있습니까? Excercise_cat 테이블이 존재하지 않습니다. Exercise_cat일까요? –

+0

[SQLZoo] (http://sqlzoo.net/howto/source/z.dir/tip241028/i02create.xml)를보고 있으며 저의 예제가 왜 저에게 효과가 있는지 궁금합니다. 내가 보는 가장 큰 차이는'AUTO_INCREMENT'이지만, 그것이 중요한지 나는 모른다. –

+0

당신은 맞습니다! 나는 좀 바보 같아. 대답 해 주면 받아 들일 것입니다. –

답변

0

당신이 Excercise_cat이 존재하지 않습니다 을 참조하는 테이블. 그러나 Exercise_cat이 (가) 있습니다.

그래서 다음 줄을 수정해야합니다.

FOREIGN KEY (ec_id) REFERENCES Excercise_cat(ec_id) 
           ^
           | 
           +-- Remove this extra 'c' 
1

당신이 Exercise_cat 의미하지 Excercise_cat

CREATE TABLE Exercise_desc 
(
    e_id  INT NOT NULL AUTO_INCREMENT, 
    name  VARCHAR(25), 
    ec_id  INT NOT NULL, 
    cal_per_hour INT NOT NULL, 
    PRIMARY KEY (e_id), 
    FOREIGN KEY (ec_id) REFERENCES Exercise_cat(ec_id) 
); 
관련 문제