1215 - Cannot add foreign key constraint

2023/8/17
在学习mysql的查询时,创建表出现错误
“1215 - Cannot add foreign key constraint” 错误通常表示外键约束无法添加
在这里插错误截图入图片描述
这可能由于以下几种情况导致:

数据类型不匹配:外键列和参考表的列应具有相同的数据类型和长度。请确保两个列的数据类型相匹配。

列值不匹配:在尝试添加外键约束之前,请确保外键列的值与参考表中的主键或唯一键列的值相匹配。如果存在不匹配的值,则无法添加外键约束。

约束名称冲突:如果在数据库中已经存在具有相同名称的外键约束,则无法添加新的外键约束。请确保约束名称是唯一的。

数据完整性问题:如果参考表中的数据不满足外键约束的要求,例如在参考表中删除了一个被外键引用的记录,将导致无法添加外键约束。

表引擎不支持外键约束:某些表引擎不支持外键约束,例如 MyISAM。如果你使用的是这些表引擎,那么无法添加外键约束。

解决该错误的方法包括:

检查数据类型和长度,并确保外键列和参考表的列匹配。
验证外键列的值与参考表的主键或唯一键列的值相匹配。
确保约束名称是唯一的,如果存在重复名称的约束,请修改约束名称。
检查参考表中的数据完整性,确保满足外键约束的要求。
如果使用的是不支持外键约束的表引擎,请考虑更换为支持外键约束的表引擎,如 InnoDB。

引用外键的表中定义tno int(11)
外键来源的表定义tno int(3)
解决:外键列和参考表的列应具有相同的数据类型和长度。请确保两个列的数据类型相匹配。

在这里插入图片描述

注意:在导入别人的sql文件时,也可能有相同的报错,检查表的创建顺序,在设置外键时,确保外键来源的表已经创建

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值