首页
学习
活动
专区
圈层
工具
发布

如何处理 MySQL错误码 1215:无法添加外键约束?

本文为作者翻译文章,原文链接:Dealing with MySQL Error Code 1215: “Cannot add foreign key constraint” 在给一个表创建外键时,MySQL...总是会出现提示: ERROR 1215 (HY000): Cannot add foreign key constraint 这信息基本是啥都没说,下面就来说说几种常见的导致1215错误的情况: 父表不存在...key constraint mysql> SHOW TABLES LIKE 'par%'; Empty set (0.00 sec) 解决方法: 先创建父表,再创建子表; SET FOREIGN_KEY_CHECKS...=0;后,创建子表,再创建父表;SET FOREIGN_KEY_CHECKS=1;(这备份常用方式) 标点符号使用不对 错误方式: ALTER TABLE child ADD FOREIGN KEY (...parent_virt INT(10) NOT NULL, FOREIGN KEY (parent_virt) REFERENCES parent(column_virt) ) ENGINE INNODB; 创建外键失败的更多提示信息

23.5K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mysql创建外键失败原因总结

    是不是遇到下图所示的错误呢? 原因一 你可能设置了ON DELETE SET NULL,但是相关的键的字段又设置成了NOT NULL值。...例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。...原因三 试图设置外键的字段没有建立起索引,或者不是一个primary key(主键)。如果其中一个不是primary key的话,你必须先为它创建一个索引。...若想要使用外键约束,表必须是InnoDB引擎(实际上,如果两个表都是MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键,只会建立索引)你需要检查表的引擎类型。...原因七 你可能设置为外键设置了一个默认值,如default=0。 原因八 ALTER声明中有语法错误。

    6.6K00

    Liquibase异常 mysql数据库 Cannot add foreign key constraint

    liquibase是能够正确创建表和外键以及索引,但是换到mysql的时候,无法成功创建外键。...: 1215 Cannot add foreign key constraint 既然liquibase能够在h2上成功创建表以及外键,但是在mysql上创建不了,而且表存在手动也不能添加外键,估计就是...Mysql添加不了外键原因有三: (1)外键对应的字段数据类型不一致 (2)两张表的存储引擎不一致 (3)设置外键时“删除时”设置为“SET NULL” 一个个排除,发现table_monitor_strategy...这张表对应account_monitor_strategy这张表的外键字段是设计成varchar类型的,而account_monitor_strategy中的id是bigint型的,所以才会出现无法创建外键的问题...这个问题可能是mysql特有的,在h2上依然能够成功创建外键。

    1.7K40

    MySQL 外码约束原理:如何解决数据库添加数据时产生的外码(外键)约束?

    文章目录 前言 一、插入新数据时报错外键约束? 二、对于出错 SQL 语句的分析 三、对于外码约束的分析 四、如何处理外键约束?...总结 ---- 前言 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束的情况,为什么会产生这样的问题?那我们该如何处理这一问题呢?依据又是什么?...一、插入新数据时报错外键约束?...我们在 Course 表中插入课程号为 1 的数据时提示违反了外键约束,插入命令如下: insert into course(cno,cname,cpno,ccredit) values('1','数据库...---- 总结 本文我们掌握了 MySQL 数据库如何在设计不合理时遇到的外码约束的问题,并通过经典案例为大家分析了为何会出现这样的问题,同时顺着思路来设计业务的解决方案。

    4.4K20

    aardio使用whttp库(winhttp)出现错误:beginSendData ERROR CODE:183 当文件已存在时,无法创建该文件。

    按照抓包的内容写好http请求代码后,总是运行出错:beginSendData ERROR CODE:183 当文件已存在时,无法创建该文件。...这个错误,翻遍整个网络也没有找到解决方法,甚至遇到这个问题的人都几乎没有,难道只有用aardio的winhttp才会遇到这个问题? 这个问题困扰了我很久,网上没有资料,只能自己解决,或者不用。...偶尔来了灵感,感觉这个错误应该是重复创建了什么玩意导致的。...于是把发送请求时携带的header内容一条一条去掉尝试,最后发现是因为在header里面携带了Referer数据,这个数据可以在post函数的第4个参数中指定,但如果在header字符串内包含此数据的话...更新: 在后面的使用中,发现在使用inet.whttp库的post功能时,如果header中含有content-type: application/x-www-form-urlencoded这行时,也会提示这个错误

    3.1K20

    连接本地和服务器 MySQL 时出现 2003-Can’t connect to MySQL server on ‘localhost’(10061) 错误,如何解决?

    连接本地 MySQL 时出现 2003-Can’t connect to MySQL server on ‘localhost’(10061) 错误,如何解决?...在日常的 MySQL 开发或运维中,经常会遇到连接 MySQL 数据库时出现 2003 - Can't connect to MySQL server on 'localhost' (10061) 错误...这类问题不仅仅出现在特定操作系统或 MySQL 版本下,也可能由多种因素导致。...@'localhost' IDENTIFIED BY 'password'; 解决方案权重: 三、操作系统分析(详细版) 连接 MySQL 时出现 2003 - Can't connect to MySQL...可以在防火墙中创建规则允许 MySQL 端口的流量: 打开控制面板 -> 系统和安全 -> Windows 防火墙 -> 高级设置 -> 入站规则。

    8.6K10

    MySQL 数据库添加数据时为什么会产生外码(外键)约束?原理就是什么?如何解决?

    文章目录 前言 一、插入新数据时报错外键约束? 二、对于出错 SQL 语句的分析 三、对于外码约束的分析 四、如何处理外键约束?...总结 ---- 前言 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束的情况,为什么会产生这样的问题?那我们该如何处理这一问题呢?依据又是什么?...一、插入新数据时报错外键约束? 我们在 Course 表中插入课程号为 1 的数据时提示违反了外键约束。...三、对于外码约束的分析 我们根据数据库定义的参照完整性规则得知:外键 cpno 的取值不为空的情况下(如上 cpno=‘5’),与其对应的主键 cno 在参照表中必须存在。...---- 总结 本文我们掌握了 MySQL 数据库如何在设计不合理时遇到的外码约束的问题,并通过经典案例为大家分析了为何会出现这样的问题,同时顺着思路来设计业务的解决方案。

    3.8K31

    MySQL外键约束

    什么是外检约束 外键其实很好理解,简单的说就是两张表建立一个连接关系。这里我们那主表A和副表B举例,我A表中有用户信息,B表中有用户订单信息。...要是数据完整对应起来,肯定是需要把两张表关联起来,我们因此会在B表中村一个A表的字段,常见的我们存的是A表的主键ID外键。 外检约束要求 .MySQL的数据表存储引擎必须为Innodb。...外键约束的作用 保证数据的完整性和一致性. 创建语法 [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...)...SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。注意,这些在外键列没有被设为NOT NULL时才有效。...1 | 1 | 1234567890 | +----+------+------------+ 1 row in set (0.00 sec) 结论:从上面可以看出当情况为CASCADE的情况时,

    9.8K20

    mysql遇到的问题

    查询结果 2.mysql修改表结构 报 1833错误 先将外键配置删除,再更新表结构,然后再把外键添加回来即可 这也说明,建立关联前,要把表结构设计好,检查好,,, 3.mysql防止插入重复 由于我插入的是关联表...,两个字段都是外键,而且,两个字段需要又重复,只是两个结合不能有重复,所以只能想到使用select where来判断 ?...FROM device WHERE device.devicename="orange pi") ) 4.插入前判断外键是否存在...INSERT `data`(did,param1,param2,param3,param4) SELECT 5,23,44,1,1 FROM device WHERE device.id=5 5.MySQL...1215 Cannot add foreign key constraint 错误解决办法 外键数据格式和相对于的另一个表的主键格式不一样导致的,改成相同的格式和length即可。。。

    1K20

    2024Mysql And Redis基础与进阶操作系列(4)作者——LJS

    因为被依赖/被参考的值必须是唯一的 在创建外键约束时,如果不给外键约束命名,默认名不是列名,而是自动产生一个外键名 例如 student_ibfk_1,也可以指定外键约束名。...创建(CREATE)表时就指定外键约束的话,先创建主表,再创建从表 当主表的记录被从表参照时,主表的记录将不允许删除....如果类 型不一样,创建子表时,就会出现错误 “ERROR 1005 (HY000): Can't create table'database.tablename'(errno: 150)”。...当创建外键约束时,系统默认会在所在的列上建立对应的普通索引。...(2)删除表时,先删除从表emp,再删除主表dept 建表后一般情况下,表与表的关联都是提前设计好了的,因此会在创建表的时候就把外键约束定义好。

    1K10
    领券