1215 - Cannot add foreign key constraint

本文介绍了MySQL中两张表进行外键关联时可能遇到的问题及解决方法,包括字段类型不匹配、表引擎不一致等问题,并提供了具体的解决步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 问题场景:MySQL两张表想要进行外键关联,sql语句正确,但出现上述错误
  • 原因分析:
    创建外键错误的原因大概有一下几个原因:
    1、关联的两个字段的字段的类型不一致
    2、设置外键删除时set null
    3、两张表的引擎不一致
  • 解决方式:
    1、保证关联的两个字段的字段类型一致,当然字段约束不同时也不能创建成功,但报的不是这个错误
    2、默认即可
    3、查看两张表的引擎是否相同,有两种方式可以进行查看表的引擎
show table status from db_name where name='table_name';

这种方式根据查询的结果注意两个表的Engine字段的值即可

show create table table_name;

建表语句的最后一行会有engine=XX

查出表的引擎之后如果发现不同修改为相同即可,但是这是通常会出现另一个错误

1217 - Cannot delete or update a parent row: a foreign key constraint fails

这个错误出现的原因是mysql数据库设置了foreign key的关联属性导致无法删除或者更新数据
执行下面指令便可避免这个情况,但要记得执行完之后把变量改回1

set FOREIGN_KEY_CHECKS = 0

之后再执行增加外键语句就行了

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值