【发布时间】:2014-06-28 17:31:27
【问题描述】:
引用的表是“组”(InnoDB)。
它有一个 'id' 列定义为 INT(11),不可为空,自动递增,主键
引用表是'用户(InnoDB)
它的“group_id”列定义为 INT(11),不可为空。
在引用表中已经存在一个基于 'group_id' 列的唯一索引
但是在执行时
ALTER TABLE `user`
ADD CONSTRAINT `user_group` FOREIGN KEY (`group_id`) REFERENCES `group` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
我遇到了一个错误
错误:1215 无法添加外键约束
我添加了数据库转储
CREATE TABLE IF NOT EXISTS `groups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`language` varchar(255) NOT NULL,
`order` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`group_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
检查清单
- 数据库是 InnoDB 吗?是的
- 所有表都是 InnoDB 吗?是的
- 引用表上是否存在唯一索引?是的
- 是否被引用和引用列完全属于同一类型?是的
问题很简单:为什么我不能创建这个外键?
更新 1:我尝试将 ON DELETE CASCADE 替换为 ON DELETE RESTRICT 并且没有任何变化,我也尝试删除 ON DELETE 和 ON UPDATE 并且没有任何变化
【问题讨论】:
标签: mysql sql foreign-keys foreign-key-relationship