2012-04-18 4 views
0

데이터베이스 테이블을 만들고 연결하려고합니다. 내 데이터 유형이 동일하다는 것을 확실히했습니다. FK를 추가하기 전에 테이블을 만들도록해야합니다. 모든 조언을 크게 주시면 감사하겠습니다.1005 MySQL 오류 얻기, 이유 확실하지 않음

SQL query: 

ALTER TABLE `Member` ADD FOREIGN KEY (memberId) REFERENCES `Order_Head` (`memberId`) ; 

MySQL said: Documentation 
#1005 - Can't create table 'test2.#sql-184c_63' (errno: 150) (Details...) 





-- --- 
-- Table 'Order_Head' 
-- 
-- --- 

DROP TABLE IF EXISTS `Order_Head`; 

CREATE TABLE `Order_Head` (
    `orderId` INTEGER NOT NULL AUTO_INCREMENT, 
    `memberId` INTEGER NOT NULL, 
    `date` DATE NOT NULL, 
    PRIMARY KEY (`orderId`, `memberId`) 
); 

-- --- 
-- Table 'Member' 
-- 
-- --- 

DROP TABLE IF EXISTS `Member`; 

CREATE TABLE `Member` (
    `memberId` INTEGER NOT NULL AUTO_INCREMENT, 
    `userName` VARCHAR(50) NOT NULL, 
    `password` VARCHAR(50) NOT NULL, 
    `email` VARCHAR(100) NOT NULL, 
    `isAdmin` BOOLEAN NOT NULL DEFAULT false, 
    PRIMARY KEY (`memberId`) 
); 

-- --- 
-- Foreign Keys 
-- --- 

ALTER TABLE `Member` ADD FOREIGN KEY (memberId) REFERENCES `Order_Head` (`memberId`); 

-- --- 
-- Table Properties 
-- --- 
ALTER TABLE `Order_Head` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 
ALTER TABLE `Member` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; 

답변

1

사용자가 설정하려고하는 외래 키가 기본 키이며 의미했다 아마 어떤 AUTO_INCREMENT을 가지고 있기 때문에 그것은있을 수 있습니다 :

ALTER TABLE `Order_Head` ADD FOREIGN KEY (memberId) REFERENCES `Member` (`memberId`); 

당신이를 생성하지 않는 어떤 특별한 이유 외래 키는 CREATE TABLE 성명 안에 있습니까? 그렇지 않다면 아마 그렇게해야합니다.

+0

아직 존재하지 않을지도 모르는 FK를 가리키려하지 않습니다. – FunkyMonk91

+0

방금 ​​테스트 해본 결과 작동했습니다. 나는 지금 나의 잘못을 이해한다. 고마워요! – FunkyMonk91

+0

확인. 좋은 :) 그리고 ALTER 사용에 대한 좋은 지적 – jadkik94