2013-02-17 3 views
0

다음 테이블을 생성 할 때 errno 150이 발생합니다. 처음 두 개는 정상적으로 작동하지만 세 번째 오류가 발생합니다.VARCHAR 필드의 MySQL Errno 150

ERROR 1005 (HY000): Can't create table 'test2.exercise_type_exercise_groups' (errno: 150) 

아이디어가 있으십니까? 유형, 길이, 문자 집합 및 데이터 정렬이 모든 키 열에 대해 동일하다는 것을 확인했습니다. 그 밖의 문제는 무엇입니까?

미리 도움을 청하십시오!

CREATE TABLE `exercise_groups` (
    `id` VARCHAR(255) NOT NULL, 
    PRIMARY KEY `pk_exercise_groups` (`id`) 
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci; 

CREATE TABLE `exercise_types` (
    `id` VARCHAR(255) NOT NULL, 
    PRIMARY KEY `pk_exercise_types` (`id`) 
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci; 

CREATE TABLE `exercise_type_exercise_groups` (
    `exercise_type` VARCHAR(255) NOT NULL, 
    `exercise_group` VARCHAR(255) NOT NULL, 
    `link_type` ENUM('primary', 'ancillary'), 
    PRIMARY KEY `pk_exercise_type_exercise_groups` (`exercise_type`, `exercise_group`), 
    CONSTRAINT `fk_exercise_type_exercise_groups_exercise_type` 
     FOREIGN KEY (`exercise_type`) 
     REFERENCES `exercise_type` (`id`), 
    CONSTRAINT `fk_exercise_type_exercise_groups_exercise_group` 
     FOREIGN KEY (`exercise_group`) 
     REFERENCES `exercise_group` (`id`) 
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_general_ci; 
+0

오, 이런, 저의 참고 문헌이 단수의 테이블 이름에 불과하다는 것을 알았습니다 ... 나는 그것을 시험해보고 그것을 고칠 수 있는지 알아 볼 것입니다. –

+0

그래, 그게 문제 야. D' oh! –

답변

2

errno 150은 거의 도움이되지 않는 일반적인 외래 키 오류입니다. 적어도 네 가지 이유가 있습니다이 경우 :

  1. 열 유형 열 참조 된 테이블에 키가 아닌, 또는 참조 된 열/테이블이 존재하지 않는
  2. 일치하지 않습니다 (이이었다 당신의 문제 : 다른 표의 철자가 틀림)
  3. 표의 어떤 것도 InnoDB이 아닙니다.
  4. 거기에없는 외래 키를 삭제하려고합니다.
+0

@Smose 나는 그것을 고맙게 여기며; 당신은 당신 자신의 질문에 답할 수 있습니다. 그렇지만 나는 대답이 개별적인 경우뿐만 아니라 질문을 보는 모든 사람들에게 도움이되어야한다고 생각합니다. –

+0

좋은 지적, 나는 동의한다. –

+0

@Explosion Pills 감사합니다. 도와 주신 많은 분들, 저를 도와 드릴 준비가되었습니다. 열 유형이 일치하지 않는이 오류에 대한 답을 찾을 수 있었기 때문입니다.이 답변을 통해 학생 테이블에 StudentID를 설정하지 않았다는 것을 깨달았습니다. 기본 키가 모두 좋았습니다. 변경 테이블 등록 외부 키 추가 (StudentID) 참조 학생 (StudentID); – RiCHiE

관련 문제