2016-09-12 4 views
0

"webportal"데이터베이스를 만들었습니다. 이것은 내 "사용자"테이블 스크립트외래 키 제약 조건을 추가 할 수 없습니다.

DROP TABLE IF EXISTS `user`; 
CREATE TABLE `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `username` varchar(255) DEFAULT NULL, 
    `password` varchar(255) DEFAULT NULL, 
    `firstName` varchar(255) DEFAULT NULL, 
    `lastName` varchar(255) DEFAULT NULL, 
    `dateRegistered` DATE DEFAULT NULL, 
    `skypeID` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; 

이며,이 하나의 테이블 스크립트 "카탈로그"입니다.

DROP TABLE IF EXISTS `catalog`; 
create table catalog(
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `link` VARCHAR(100) NOT NULL, 
    `comment` VARCHAR(100) NOT NULL, 
    `inserDate` DATE DEFAULT NULL, 
    `content` longblob NOT NULL, 
    PRIMARY KEY (`id`), 
    CONSTRAINT `fk_catalog` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

내가 명령 줄에서 두 번째 스크립트를 실행하려고 할 때, 나는이 오류가 ...

ERROR 1215 (HY000)는 : 외래 키 제약 조건을 추가 할 수 없습니다. 이 코드의 문제점은 무엇입니까? 당신의 MySQL의 이전 버전을 사용하는 것

+0

SHOW 엔진 INNODB 상태; 먼저이 쿼리를 실행하여 Innodb 엔진에 문제가 있는지 확인하십시오. 오류가 발생하지 않으면 다른 테이블에 이미 fk_catalog라는 외래 키가 있는지 확인하십시오. 나를 위해 테이블 ​​생성 코드가 작동합니다. – ban17

+0

"SHOW ENGINE INNODB STATUS;"명령을 실행할 때 오류가 없습니다. " 다른 곳에서는 fk_catalog 외래 키를 사용하지 않습니다. –

답변

0

, 당신은 문제를 해결하기 위해 외래 키 필드에 INDEX 절을 추가 할 수 있습니다

DROP TABLE IF EXISTS `catalog`; 
create table `catalog`(
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `link` VARCHAR(100) NOT NULL, 
    `comment` VARCHAR(100) NOT NULL, 
    `inserDate` DATE DEFAULT NULL, 
    `content` longblob NOT NULL, 
    PRIMARY KEY (`id`), 
    INDEX (`user_id`), 
    CONSTRAINT `fk_catalog` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
+0

나는 이미 시도했지만 결과는 없다. –

관련 문제