【发布时间】:2016-11-22 21:13:27
【问题描述】:
我想创建一个完全如下的数据库:
所以我想为每个表定义主键和外键。 根据this 的回答,我看到了:
“city”表有 1 个 PK(ID)和 1 个 FK(国家代码)
“countrylanguage”表有 2 个 PK(语言和国家代码)和 1 个 FK (国家代码)
“国家”表有 1 个 PK(代码)
所以我尝试在“预热”的代码上创造一些魔法:
CREATE TABLE `City` (
`ID` int(11) NOT NULL,
`Name` varchar(35) NOT NULL ,
`CountryCode` varchar(3) NOT NULL DEFAULT '',
`District` varchar(20) NOT NULL ,
`Population` int(11) NOT NULL ,
PRIMARY KEY(`ID`) ,
FOREIGN KEY(`CountryCode`) REFERENCES `Country`(`Code`)
) ;
CREATE TABLE `CountryLanguage` (
`CountryCode` varchar(3) NOT NULL DEFAULT '',
`Language` varchar(30) NOT NULL ,
`IsOfficial` varchar(30) NOT NULL ,
`Percentage` float(4,1) NOT NULL ,
PRIMARY KEY(`Language`),
FOREIGN KEY(`CountryCode`) REFERENCES `Country`(`Code`)
) ;
CREATE TABLE `Country` (
`Code` varchar(3) NOT NULL DEFAULT '',
`Name` varchar(52) NOT NULL DEFAULT '',
`Continent` varchar(63),
`Region` varchar(26) 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` varchar(45) NOT NULL DEFAULT '',
`GovernmentForm` varchar(45) NOT NULL DEFAULT '',
`HeadOfState` varchar(60) DEFAULT NULL,
`Capital` int(11) DEFAULT NULL,
`Code2` varchar(2) NOT NULL DEFAULT '',
PRIMARY KEY(`Code`)
) ;
但是我的 mysql 命令行客户端两次出现相同的 ERROR 1005,并说它无法创建表 'test.city' 和 'test.countrylanguage' 以 errno:150 作为解释。
所以我在这里搜索了一下,发现了一些关于不具有相同类型/参数的表元素的答案(例如 INT(2) 到 INT(2) NOT NULL)。据我所知,这里没有发生过这样的事情。
我喝咖啡的大脑在这里缺少什么?
提前感谢您的宝贵时间。
【问题讨论】:
-
这个不能标记为mysql和sql-server。选择一个
-
我正要进行编辑删除它。对不起。
标签: mysql mysql-workbench