[英]cannot add foreign key in mysql
您好,我想创建一个外键来关联2个表,但是当我使用此查询时
ALTER TABLE Player
ADD CONSTRAINT FK_team_id FOREIGN KEY (team_id)
REFERENCES Team(id);
我收到错误错误代码:1215无法添加外键约束
我正在使用具有utf8编码的innoDB引擎..表Player和Team看起来像这样
玩家 ID PK Auto_increment等.. .. team_id(必须为外键)
队伍编号PK ..
有人为此解决了吗?
这是创建表的语法
CREATE TABLE `Player` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Name` varchar(100) DEFAULT NULL,
`Firstname` varchar(100) DEFAULT NULL,
`Prefix` varchar(50) DEFAULT NULL,
`Age` date DEFAULT NULL,
`Position` varchar(2) DEFAULT NULL,
`Caps` tinyint(3) DEFAULT NULL,
`Goals` tinyint(3) DEFAULT NULL,
`Captain` tinyint(1) DEFAULT NULL,
`team_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `Team` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`Name` varchar(100) DEFAULT NULL,
`Coach` varchar(100) DEFAULT NULL,
`Prefix` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
确保两列相同( SIGNED
, NULL
SIGNED
等)。 另外,被引用的任何值都必须存在于被引用的表中。 否则,尝试创建密钥以获取更多信息后,运行SHOW INNODB STATUS
。
不能添加约束的主要原因有两个。
第一个(也是最有可能的)是Player表中存在Team表中不存在的一个或多个team_id数据。
第二个是两个表的数据类型是否不同。
运行以下查询以查看玩家表中的团队ID是否存在问题:
select team_id
from Player
where team_id not in (select id from team)
本质上,这将标识缺少的team_id。 根据需要进行修复。 要查找的一件事是玩家表中的team_id为-1或0(无论您的默认值是什么),但都没有在team表中显示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.