1
다음 표를 생성했는데 외래 키 제약 조건 스크립트가 작동하지 않는 이유는 알 수 없습니다. 여기MySQL 오류에서 외래 키를 만들 수 없음 : 150
CREATE TABLE IF NOT EXISTS `project_map` (
`id` int(11) NOT NULL,
`project_id` varchar(60) NOT NULL,
`head` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
그리고 내 추가 구속 라인 :
alter table project_map add constraint p_map_fk001 foreign key (`project_id`) references project(`project_id`)
어떤 도움이 좋을 것이다 여기
CREATE TABLE IF NOT EXISTS `project` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`project_id` varchar(60) NOT NULL,
`project_name` varchar(500) NOT NULL,
`cons_bal` int(11) NOT NULL,
`non_cons_bal` int(11) NOT NULL,
`budget_head` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
그리고 내 다른 테이블입니다. 고맙습니다.
이 문서는 말 : 'InnoDB의 테이블을 포함하는 외래 키 오류가 발생할 경우 (일반적으로 MySQL 서버에서 150 오류), 당신이를 얻을 수 있습니다 SHOW ENGINE INNODB STATUS의 출력을 검사하여 가장 최근의 InnoDB 외부 키 오류에 대한 자세한 설명. ' –
아마 요구 사항은 아니지만 소스 테이블에 외래 키 특성을 기본 키로 갖는 것이 좋습니다 – Uriil
'SHOW ENGINE INNODB STATUS'의 결과 : 테이블 들여 쓰기/# sql-88c_d9의 외래 키 제약 조건 오류 : 외래 키 ('project_id')가 프로젝트 ('project_id')를 참조했습니다. 참조 된 열이 첫 번째 열로 나타나거나 해당 열의 열과 참조 된 테이블이 일치하지 않는 참조 된 테이블에서 인덱스를 찾을 수 없습니다 제약 조건. 주 ENUM과 SET의 내부 저장 형식이 오래된 테이블 에서> = InnoDB의-4.1.12과 같은 열이 생성 테이블에 변경하는 것이 새 테이블에서 같은 열을 참조 할 수 없습니다. @bmused – aki2all