2017-02-25 2 views
0

저는 실제로 데이터베이스를 만들려고하는데 외래 키에 오류가 있습니다. 나 좀 도와 줄래?1215 - 외래 키 제약 조건을 추가 할 수 없습니다.

DROP TABLE IF EXISTS `City`; 
CREATE TABLE `City` (`id` int(11) NOT NULL AUTO_INCREMENT, 
`idCountry` int(11) DEFAULT NULL, 
`Name` char(35) CHARACTER SET latin1 NOT NULL DEFAULT '', 
`CountryCode` char(3) CHARACTER SET latin1 NOT NULL DEFAULT '', 
`District` char(20) CHARACTER SET latin1 NOT NULL DEFAULT '', 
`Population` int(11) NOT NULL DEFAULT '0', 
PRIMARY KEY (`id`) USING BTREE, 
KEY `fk_constraint_city_country` (`idCountry`), 
CONSTRAINT `fk_constraint_city_country` FOREIGN KEY (`idCountry`) 
REFERENCES `Country` (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=utf8; 

이 오류가 : MySQL은 말했다 : 문서 1215 - 외래 키 제약 조건을

+0

당신이 국가 테이블을 게시 할 수는 개요? "country"테이블의 마비 아이디 "city"테이블의 idCountry와 같은 타입이 아닙니다 –

+1

외래 키는 ** 테이블 **의 칼럼을 참조해야합니다. 외래 키는'FOREIGN KEY (idCountry) '에 제공된 것입니다 – GurV

+0

있습니다 시아 국가 표 : – rowe

답변

0
DROP TABLE IF EXISTS `Country`; 
CREATE TABLE `Country` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`Code` char(3) CHARACTER SET latin1 DEFAULT NULL, 
`Name` char(52) CHARACTER SET latin1 NOT NULL DEFAULT '', 
`Continent` enum('Asia','Europe','North 
America','Africa','Oceania','Antarctica','South America') CHARACTER SET  
latin1 NOT NULL DEFAULT 'Asia', 
`Region` char(26) CHARACTER SET latin1 NOT NULL DEFAULT '', 
`SurfaceArea` float(10,2) NOT NULL DEFAULT '0.00', 
`IndepYear` smallint(6) DEFAULT NULL, 
`Population` int(11) NOT NULL DEFAULT '0', 
`LifeExpectancy` float(3,1) DEFAULT NULL, 
`GNP` float(10,2) DEFAULT NULL, 
`GNPOld` float(10,2) DEFAULT NULL, 
`LocalName` char(45) CHARACTER SET latin1 NOT NULL DEFAULT '', 
`GovernmentForm` char(45) CHARACTER SET latin1 NOT NULL DEFAULT '', 
`HeadOfState` char(60) CHARACTER SET latin1 DEFAULT NULL, 
`Capital` int(11) DEFAULT NULL, 
`Code2` char(2) CHARACTER SET latin1 NOT NULL DEFAULT '', 
PRIMARY KEY (`id`) USING BTREE 
) ENGINE=InnoDB AUTO_INCREMENT=240 DEFAULT CHARSET=utf8; 

을 추가하고 국가 langage가 없습니다 :

DROP TABLE IF EXISTS `CountryLanguage`; 
CREATE TABLE `CountryLanguage` (
`idCountry` int(11) NOT NULL DEFAULT '0', 
`idLanguage` int(11) NOT NULL DEFAULT '0', 
`IsOfficial` enum('T','F') CHARACTER SET latin1 NOT NULL DEFAULT 'F', 
`Percentage` float(4,1) NOT NULL DEFAULT '0.0', 
PRIMARY KEY (`idCountry`,`idLanguage`) USING BTREE, 
KEY `fk_constraint_Language` (`idLanguage`), 
CONSTRAINT `fk_constraint_Country` FOREIGN KEY (`idCountry`) REFERENCES  
`Country` (`id`), 
CONSTRAINT `fk_constraint_Language` FOREIGN KEY (`idLanguage`)  
REFERENCES `Language` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf