尝试添加外键时出现mysql错误

Posted

技术标签:

【中文标题】尝试添加外键时出现mysql错误【英文标题】:mysql error when trying to add foreign keys 【发布时间】:2013-11-16 18:56:50 【问题描述】:

我正在使用 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;

还有其他列,但这里没有引用。

另外两张表的结构类似,基本上是这样的:

CREATE TABLE `orderdetail` (
 `PO` varchar(32) NOT NULL,
  `EnteredID` int(11) NOT NULL,
   PRIMARY KEY (`PO`,`EnteredID`)
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

不过,每次我尝试向表中添加外键时,都会得到:

错误 1215:无法添加外键约束

接下来是:

错误:运行故障回复脚本时出错。详情如下。

错误 1050:表 'orderdetail' 已存在

根据我的研究,错误 1050 在这里毫无意义,是前一个查询不起作用时引发的错误。其他人遇到了使用错误的数据库类型、具有相同名称的外键、大小写问题和数据类型不匹配的问题。我在所有表上都使用 InnoDB 引擎,我的 MySQL 服务器设置为全部小写且不区分大小写,类型完全匹配,并且没有其他具有该名称的外键。

所以我不知道为什么我在创建几个外键时遇到这么多麻烦。

【问题讨论】:

请发布您用于添加 FK 约束的语句。 您是否正在尝试创建一个已经存在的表? 对于 Michael Berkowski,我正在尝试通过 MySQL Workbenches UI 来做到这一点。从 Alter Table->Foreign Keys 选项卡 【参考方案1】:

原来我需要在该列的引用表上建立一个索引。我以为主键索引就足够了,但我想不是。

【讨论】:

以上是关于尝试添加外键时出现mysql错误的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 添加表时出现“错误 1005”

使用 Laravel 迁移创建外键时出现 MySQL 错误

MySQL 无法添加外键约束

使用Laravel迁移创建外键时出现MySQL错误

尝试向 MySQL 中的 table.column 添加唯一约束时出现重复条目​​错误

MySQL数据库的Laravel迁移“无法添加外键约束”错误