MySQL 版本5.7.26 解决思路 1.检查两个字段的数据类型是否一致 2.检查两个字段的数据长度是否一致(有时候不指定int长度,长度是10,有时候是11) image.png 3.检查两个字段是否设置了
本文为作者翻译文章,原文链接:Dealing with MySQL Error Code 1215: “Cannot add foreign key constraint” 在给一个表创建外键时,MySQL...总是会出现提示: ERROR 1215 (HY000): Cannot add foreign key constraint 这信息基本是啥都没说,下面就来说说几种常见的导致1215错误的情况: 父表不存在...KEY (parent_id) REFERENCES `parent`(`id`) -> ) ENGINE INNODB; ERROR 1215 (HY000): Cannot add foreign...parent_virt INT(10) NOT NULL, FOREIGN KEY (parent_virt) REFERENCES parent(column_virt) ) ENGINE INNODB; 创建外键失败的更多提示信息...(HY000): Cannot add foreign key constraint mysql>show engine innodb status\G .... ------------------
引言: MySQL中经常会需要创建父子表之间的约束,这个约束是需要建立在主外键基础之上的,这里解决了一个在创建主外键约束过程中碰到的一个问题。 1....碰到错误 在创建外键之时,使用的SQL和碰到错误信息如下: alter table `product' add CONSTRAINT `sid_ref` FOREIGN KEY (`sid`)...REFERENCES `sealer` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION 碰到的错误信息如下: 无法正确的插入外键约束。...解决的办法 修改product.sid中的数据类型,添加unsigned和字段的长度,将其设置为相同即可。 5....总结 之所以出现1215的问题,是由于主外键之间的数据类型不一致造成的,以后类似问题,皆可按此处理。
文章目录 前言 一、插入新数据时报错外键约束? 二、对于出错 SQL 语句的分析 三、对于外码约束的分析 四、如何处理外键约束?...总结 ---- 前言 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束的情况,为什么会产生这样的问题?那我们该如何处理这一问题呢?依据又是什么?...一、插入新数据时报错外键约束?...三、对于外码约束的分析 我们根据数据库定义的参照完整性规则得知:外键 cpno 的取值不为空的情况下(如上 cpno=‘5’),与其对应的主键 cno 在参照表中必须存在。...四、如何处理外键约束? 插入数据的时候,所有的 cpno 字段暂时都置为 null,所有数据插入以后,再依次更新这些数据的 cpno 的值。该方法的优点是复杂性低,容易实现。
什么是外检约束 外键其实很好理解,简单的说就是两张表建立一个连接关系。这里我们那主表A和副表B举例,我A表中有用户信息,B表中有用户订单信息。...要是数据完整对应起来,肯定是需要把两张表关联起来,我们因此会在B表中村一个A表的字段,常见的我们存的是A表的主键ID外键。 外检约束要求 .MySQL的数据表存储引擎必须为Innodb。...外键约束的作用 保证数据的完整性和一致性. 创建语法 [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...)...SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。注意,这些在外键列没有被设为NOT NULL时才有效。...DELETE set default ON UPDATE set default; ERROR 1215 (HY000): Cannot add foreign key constraint 结论:
KEY :主键,指定该列的值可以唯一地标识该列记录 # FOREIGN KEY :外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性 返回顶部 NOT NULL 是否可空,null表示空,非字符串...DEFAULT 我们约束某一列不为空,如果这一列中经常有重复的内容,就需要我们频繁的插入,这样会给我们的操作带来新的负担,于是就出现了默认值的概念。...departments(dep_id)); ERROR 1215 (HY000): Cannot add foreign key # 设置dep_id非空,仍然不能成功创建外键 mysql> alter...(HY000): Cannot add foreign key constraint # 当设置字段为unique唯一字段时,设置该字段为外键成功 mysql> alter table departments...Restrict方式 同no action, 都是立即检查外键约束 . Set default方式 父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别
如果类 型不一样,创建子表时,就会出现错误 “ERROR 1005 (HY000): Can't create table'database.tablename'(errno: 150)”。...但是索引名是外键的约束名 根据外键查询效率很高 删除外键约束后,必须手动删除对应的索引 1.5 添加外键约束 (1)建表时 create table 主表名称( 字段1...添加了外键约束后,主表的修改和删除数据受约束 添加了外键约束后,从表的添加和修改数据受约束 在从表上建立外键,要求主表必须存在删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除...答案 答:不是的 问题2:建和不建外键约束有什么区别? 答案: 建外键约束,你的操作(创建表、删除表、添加、修改、删除)会受到限制,从语法层面受到限制。...所以, MySQL 允许你不使用系统自带的外键约束,在应用层面完成检查数据一致性的逻辑。 也就是说,即使不用外键约束,也要想办法通过应用层面的附加逻辑,来实现外键约束的功能,确保数据的一致性。 3.
文章目录 前言 一、插入新数据时报错外键约束? 二、对于出错 SQL 语句的分析 三、对于外码约束的分析 四、如何处理外键约束?...总结 ---- 前言 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束的情况,为什么会产生这样的问题?那我们该如何处理这一问题呢?依据又是什么?...一、插入新数据时报错外键约束? 我们在 Course 表中插入课程号为 1 的数据时提示违反了外键约束。...三、对于外码约束的分析 我们根据数据库定义的参照完整性规则得知:外键 cpno 的取值不为空的情况下(如上 cpno=‘5’),与其对应的主键 cno 在参照表中必须存在。...---- 总结 本文我们掌握了 MySQL 数据库如何在设计不合理时遇到的外码约束的问题,并通过经典案例为大家分析了为何会出现这样的问题,同时顺着思路来设计业务的解决方案。
· 错误:1215 SQLSTATE: HY000 (ER_CANNOT_ADD_FOREIGN) 消息:无法添加外键约束。...· 错误:1216 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW) 消息:无法添加或更新子行,外键约束失败。...· 错误:1217 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED) 消息:无法删除或更新父行,外键约束失败。...· 错误:1452 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW_2) 消息:不能添加或更新子行,外键约束失败(%s)。...· 错误:1493 SQLSTATE: HY000 (ER_DROP_PARTITION_WHEN_FK_DEFINED) 消息:在表上定义了外键约束时,不能舍弃分区。
(根据外键查询效率很高) (9)删除外键约束后,必须 手动 删除对应的索引 # 6.5 添加外键约束 (1)建表时 create table 主表名称( 字段1 数据类型 primary key,...添加了外键约束后,主表的修改和删除数据受约束 添加了外键约束后,从表的添加和修改数据受约束 在从表上建立外键,要求主表必须存在 删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除...答:不是的 问题 2:建和不建外键约束有什么区别? 答:建外键约束,你的操作(创建表、删除表、添加、修改、删除)会受到限制,从语法层面受到限制。...例如:在员工表中,可以添加一个员工的信息,它的部门指定为一个完全不存在的部门。 问题 3:那么建和不建外键约束和查询有没有关系? 答:没有 在 MySQL 里,外键约束是有成本的,需要消耗系统资源。...添加数据时,没有任何错误或警告 但是 MySQL 8.0 中可以使用 check 约束了。
接着讲解了非空约束、唯一性约束和主键约束的使用方法,以及如何添加、删除和使用复合约束等技巧。 在自增列和外键约束方面,本文详细介绍了其作用和关键字,以及如何指定和删除自增约束和外键约束等技巧。...(根据外键查询效率很高) ( 9 )删除外键约束后,必须手动删除对应的索引 6. 5 添加外键约束 ( 1 )建表时 create table 主表名称( 字段 1 数据类型 primary key,...添加了外键约束后,主表的修改和删除数据受约束 添加了外键约束后,从表的添加和修改数据受约束 在从表上建立外键,要求主表必须存在 删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除 6...答:不是的 问题 2 :建和不建外键约束有什么区别? 答:建外键约束,你的操作(创建表、删除表、添加、修改、删除)会受到限制,从语法层面受到限制。...添加数据时,没有任何错误或警告 但是 MySQL 8.0中可以使用check约束了 。
(简称PK) 外键约束(foreign key):…(简称FK) 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。...username varchar(255) ); 外键约束:foreign key 外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键 字段,那么该字段的值必须来源于参照的表的主键...外键可以为NULL 被外键引用的字段不一定是主键,但至少具有unique约束。...InnoDB 优点:支持事务、行级锁、外键等。这种存储引擎数据的安全得到保障。...表的结构存储在xxx.frm文件中 数据存储在tablespace这样的表空间中(逻辑概念),无法被压缩,无法转换成只读。 这种InnoDB存储引擎在MySQL数据库崩溃之后提供自动恢复机制。
1181:回滚事务失败 1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库 1205:加锁超时 1211:当前用户没有创建用户的权限 1216:外键约束检查失败...,更新子表记录失败 1217:外键约束检查失败,删除或修改主表记录失败 1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器 1227:权限不足,您无权进行此操作 1235:...错误:1239 SQLSTATE: 42000 (ER_WRONG_FK_DEF) 消息:对于 ’%s’: %s, 外键定义不正确。...错误:1451 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED_2) 消息:不能删除或更新父行,外键约束失败(%s)。...错误:1452 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW_2) 消息:不能添加或更新子行,外键约束失败(%s)。
,但是换到mysql的时候,无法成功创建外键。...手动执行添加外键也无法成功 手动执行sql语句 ALTER TABLE datasync_monitor.table_monitor_strategy ADD CONSTRAINT fk_account_table...: 1215 Cannot add foreign key constraint 既然liquibase能够在h2上成功创建表以及外键,但是在mysql上创建不了,而且表存在手动也不能添加外键,估计就是...Mysql添加不了外键原因有三: (1)外键对应的字段数据类型不一致 (2)两张表的存储引擎不一致 (3)设置外键时“删除时”设置为“SET NULL” 一个个排除,发现table_monitor_strategy...这个问题可能是mysql特有的,在h2上依然能够成功创建外键。
反过来,站在MySQL角度,凡是插入进来的数据,都是符合数据约束的! 约束的最终目标:保证数据的完整性和可预期性。 二....所以把telphone添加成唯一键: alter table t20 add constraint unique_telphone unique(telphone); //添加一个名为 unique_telphone...外键 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。...语法: foreign key (字段名) references 主表(列) 案例: 这样的student只是有外键之名(关联关系),但是没有外键之实(没有约束)。重新创建一个。...外键需要注意: (1)从表和主表的关联关系 (2)产生外键约束 总结: 好了,到这里今天的知识就讲完了,大家有错误一点要在评论指出,我怕我一人搁这瞎bb,没人告诉我错误就寄了。
如果表的任何行的搜索条件的结果为 FALSE,则约束可能返回错误(但如果结果为 UNKNOWN 或 TRUE,则约束不会返回错误)。...要牢记的使用规则: AUTO_INCREMENT 自增列不允许使用 引用另一个表中的另一列不允许使用 存储的函数和用户定义的函数不允许使用 存储过程和函数参数不允许使用 子查询不允许使用 在外键中用于后续操作...3819 (HY000): Check constraint 'gender_male' is violated....如您在 ERROR 消息中所见,MySQL 正在显示 CHECK 约束名称。可以从应用程序源代码中使用它来调试错误并知道从哪个 CHECK 失败。...,但是根据我以前作为程序员的经验,我不建议在表中添加逻辑,因为除非您无法访问应用程序代码,否则很难找到或调试错误。
将t_test1表中id字段设为主键,t_test2表中id字段设为外键。...外键约束(foreign key):......password varchar(255) ); insert into t_user(id,password) values(1,'123'); //编译错误,约束username字段不能为空!...1.15.5 外键约束 关于外键约束的相关术语: 外键约束:foreign key 外键字段:添加有外键约束的字段 外键值:外键字段中的每一个值。...外键值可以为null 1.16 mysql常量 1.字符串常量:用单引号进行字符串 参考链接 【数据库】 mysql的四种安装方式_mysql安装-CSDN博客 超级详细的mysql数据库安装指南 -
1.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysql.sock' 问题分析...最后修改密码命令如下: mysql> use mysql; mysql> update user set password=password("123456") where user="root"; 再删除刚刚添加的...这也给我们排错造成了一定的阻碍。 所以,今天民工哥就把主从同步过程中一些常见的错误代码,它的具体说明给大家整理出来了。 MySQL常见错误代码说明: 130 :文件格式不正确。...提交事务失败 1181:回滚事务失败 1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库 1205:加锁超时 1211:当前用户没有创建用户的权限 1216:外键约束检查失败...,更新子表记录失败 1217:外键约束检查失败,删除或修改主表记录失败 1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器 1227:权限不足,您无权进行此操作 1235:MySQL
在Read committed的隔离模式下,除了唯一性约束检查以及外键约束检查需要Gap lock,innodb存储引擎不会使用gap lock的锁算法。...模式下,则会报如下错误: [sql] mysql> select @@version; +-------------+ | @@version | +-------------+ ...1665 (HY000): Cannotexecute statement: impossible to write to binary log since BINLOG_FORMAT =STATEMENT...ERROR 1665 (HY000): Cannotexecute statement: impossible to write to binary log since BINLOG_FORMAT =STATEMENT...在my.cnf里面的[mysqld]添加 [mysqld] innodb_locks_unsafe_for_binlog = 1 然后重启,然后去check模仿一个事务操作,如下所示: [sql] mysql
…) @JoinColumn({ name: 'abc_abc'}) foriegnObj: ForiegnObj; OneToOne和 ManyToOne在同样的条件下会指定对应的外键...,直接通过JoinColumn的name属性来控制外键名称。...3、两表主键ID一定要类型、长度保持一致,不然会报 "ERROR 1215 (HY000): Cannot add foreign key constraint" 错误。
领取专属 10元无门槛券
手把手带您无忧上云