2017-02-25 32 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"テーブルからのマビid idCountryと同じタイプではありません。 –

+1

外部キーは**テーブル**のカラムを参照する必要があります。これは 'FOREIGN KEY(idCountry) 'にはありません – GurV

+0

国のテーブルshema: – 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; 

外部キー制約を追加することはできませんと国関連リンク言語があります:

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 
関連する問題