1215 – Cannot add foreign key constraint

1215 – Cannot add foreign key constraint1215 – Cannot add foreign key constraint

大家好,又见面了,我是你们的朋友全栈君。

    最近在做新生入学系统,学生表中包括新生的班级,专业等信息,班级,专业就需要和班级表,专业表进行关联,但是在添加外键的过程中却出现了“Cannot add foreign key constraint” 的问题,也就是不能添加外键约束,为什么就不能添加外键呢?

1215 - Cannot add foreign key constraint

出现这个问题主要有三个原因:

(1)外键对应的字段数据类型不一致

(2)设置外键时“删除时”设置为“SET NULL”

(3)两张表的存储引擎不一致

     经过检查,前两种情况排除,但是两张表的存储引擎都不清楚,于是又百度了一些关于存储引擎的东西:

查询表的引擎:

a、show table status from db_name where name=’table_name’;

b、show create table table_name;

查询结果如图:

班级表的引擎:

1215 - Cannot add foreign key constraint

学生表的引擎:

1215 - Cannot add foreign key constraint


    果然是两张表的引擎不一致,那就修改成一样的呗

修改表的引擎:

alter table table_name engine=innodb;

    首先将basicclassentities表的ndbcluster引擎修改为InnoDB,但是又出现了新的错误:”1217 – Cannot delete or update a parent row: a foreign key constraint fails”,于是尝试将freshstudententities表的引擎修改为ndbcluster,同样的问题。

    “1217 – Cannot delete or update a parent row: a foreign key constraint fails“,这可能是MySQL在引擎中设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况:

SET FOREIGN_KEY_CHECKS = 0; 删除完成后设置 :SET FOREIGN_KEY_CHECKS = 1; 

     还是不能修改表的引擎,于是又继续探索mysql的各种引擎(http://www.cnblogs.com/ggjucheng/archive/2012/11/11/2765469.html),经过分析,由于ndbcluster和集群,分布式有关,自己的电脑上没有足够的权限,所以修改不了,只要将两张表的引擎都修改为InnoDB,就可以添加外键了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105725.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 4g网络设置dns地址_4G网速越来越慢,通过这三个简单的操作,网速成倍提升[通俗易懂]

    随着互联网的进步,从零几年开始移动手机在全国开始普及起来,网速也像火箭一样快速飙升,从2G发展到了现在的5G。不过,有很多网友表示,刚从2G或者3G升级到4G时,网速体验非常好,但近两年来的4G网速越来越慢,还卡顿,甚至感觉还不如以前的3g网络。那么今天,小编就为大家介绍调整手机上网慢和卡顿的三个方法,助你快速提升4G网速!方法一:打电话给运营商客服来刷新上网数据小编为大家介绍的第一个方法是近期最…

    2022年4月15日
    282
  • navicat 15 linux 在线激活码【注册码】

    navicat 15 linux 在线激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    89
  • 2020JAVA面试题附答案(长期更新)[通俗易懂]

    2020JAVA面试题附答案(长期更新)[通俗易懂]最新更新日志2018年12月28日:更新了springboot相关面试题,spring更多的内容(类别:开源框架)2019年11月14日:更新redis缓存雪崩,击穿,穿透相关面试题,更新了tomcat调优相关问题,更新了TCP三次握手四次握手问题JAVA基础JAVA中的几种基本类型,各占用多少字节?下图单位是bit,非字节1B=8bitString能被继承吗?…

    2022年5月28日
    40
  • 通过端口查找进程

    通过端口查找进程

    2021年9月16日
    48
  • 备份集中的数据库与现有数据库“XXX”数据库不同[通俗易懂]

    备份集中的数据库与现有数据库“XXX”数据库不同[通俗易懂]在做数据库相关的日常工作中,还原与备份数据库会经常遇到,有时候同样的sql2008备份的数据库,从别人那边备份的数据库文件,在自己的电脑上还原会出现:的错误。解决方法有两种:第一种:右键数据库点击还原数据库,填上需要还原的数据库名,就可以直接还原了。第二种:在新建的数据库上还原数据库时,选好备份文件后,勾选上覆盖现有数据库即可。

    2022年6月14日
    28
  • Qt之log数据展示模块简要实现

    Log模块主要用于实时测井数据的显示和测后曲线数据的预览和打印,为更好的展示对Qt中相关知识点的应用,特以Log模块为例对其进行简要实现。内容导图:一、功能需求1、界面效果图Log模块实现曲线

    2021年12月29日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号