我正在使用 MySql 5.6.14 和 MySql Workbench 6.0.7 在 MySql 中构建数据库。我有一个订单表和 2 个详细信息表。我正在尝试将 2 个详细信息表设置为订单表 OrderNumber 列的外键。
主订单表可以这样创建:
CREATE TABLE `orders` (
`PO` varchar(32) NOT NULL,
PRIMARY KEY (`OrderTotal`,`PO`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
还有其他列,但这里没有引用。
其他 2 个表的结构相似,基本上如下所示:
CREATE TABLE `orderdetail` (
`PO` varchar(32) NOT NULL,
`EnteredID` int(11) NOT NULL,
PRIMARY KEY (`PO`,`EnteredID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
每次我尝试向表中添加外键时,我都会得到:
ERROR 1215:无法添加外键约束
接下来是:
错误:运行故障回复脚本时出错。详情如下。
错误 1050:表 'orderdetail' 已存在
根据我的研究,错误 1050 在这里毫无意义,是前一个查询不起作用时引发的错误。其他人遇到了使用错误的数据库类型、具有相同名称的外键、大小写问题和数据类型不匹配的问题。我在所有表上都使用 InnoDB 引擎,我的 MySQL 服务器设置为全部小写且不区分大小写,类型完全匹配,并且没有其他具有该名称的外键。
所以我不知道为什么我在创建几个外键时遇到这么多麻烦。