• 1215 Cannot add foreign key constraint表名大小写不一致导致的


    mysql版本为:

    5.7.35-log

     报错:1215 - Cannot add foreign key constraint

    其他总结:

    情况一:数据表存储引擎不一致

    clipboard.png

     只有InnoDB是支持外键的。这就要求在指定外键时,两张表的引擎都要保证是InnoDB。如果这两张表任意一张表的引擎不是InnoDB,那么都会报1215 - cannot add foreign key constraint错误。

    情况二:在约束表中,相关的reference数据不存在

    情况三:在约束表中,相关的reference_column不是primary key

    情况四:两个字段的类型不一样

    将两个字段的类型、长度、有无符号设置 全部一致

    情况五:即是外键,也是主键

    比如我们把数据表中的某个字段设置为了主键,那么此主键是必然不能为null。此时,我们又设置其为外键。但在设置删除策略时,却不小把它设置为:删除时设置为null。则会发生上述异常。

    clipboard.png

    原因其实刚才已经阐述了:是主键,则数据必然不能为null,与我们设置的策略:外键对应的表中的数据删除时,将此数据设置为null冲突。解决方法:设置策略为No ActionRestrict,这两个值的意思一样,同为:在删除时检查约束,如果存在外键,则报约束性异常。

    字段属性与删除时触发事件冲突

    比如,我们设置删除时set null

    clipboard.png

    然后这个字段在本表的属性却为:

    clipboard.png

    则也会发生1215 - cannot add foreign key constraint。原因相信大家也猜大了,如果我们这样设置了,一旦发生外键的删除操作,就要按我们的设置将此字段设置为null,但我们同时又设置了此字估不能为null。当然就会发生错误了。为了规避这个错误,mysql 会在设置外键时,发生1215 - cannot add foreign key constraint

  • 相关阅读:
    node express 上传文件
    [Java] 对象转型-01
    [Java] 类的Equals方法 (String, Data类都已经自动重写)
    editor does not contain a main type" 错误解决方
    Ubuntu网络连接图标消失解决方法
    [面试] 从尾到头打印链表-递归实现
    C++继承的例子 (1)
    国内访问gmail
    [python] 第7章 函数 第8章 模块
    Devcpp(Dev C++)使用说明及技巧
  • 原文地址:https://www.cnblogs.com/wqbin/p/16063249.html
Copyright © 2020-2023  润新知