首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

本文为作者翻译文章,原文链接:Dealing with MySQL Error Code 1215: “Cannot add foreign key constraint” 在给一个表创建外键时,MySQL...总是会出现提示: ERROR 1215 (HY000): Cannot add foreign key constraint 这信息基本是啥都没说,下面就来说说几种常见的导致1215错误的情况: 父表不存在...REFERENCES pariente(id); 正确: ALTER TABLE child ADD FOREIGN KEY (parent_id) REFERENCES parent(id); 父列和子列数据类型不一致...(10), FOREIGN KEY (parent_column_3) REFERENCES `parent`(`column_3`) ) ENGINE INNODB; 父表和子表表(列)的字符集 或...parent_virt INT(10) NOT NULL, FOREIGN KEY (parent_virt) REFERENCES parent(column_virt) ) ENGINE INNODB; 创建外键失败的更多提示信息

21.5K21

PostgreSQL 13.0-13.15 功能更新和bug fixed列表

版本号 BUG FIXED/功能更新 PG13.0 wal_keep_segments 改名为 wal_keep_size PG13.0 移除了7.0 8.0 之前的语法定语的运算符支持和外键约束的支持...修复涉及作为外键表的继承子表的常规表的查询的规划错误 PG13.4 在WAL重放事务中引起文件截断时更新最低恢复点文件截断是不可逆转的,因此不再安全地在该记录之前停止恢复。...PG13.7 修复使用其前导键为表达式的索引进行CLUSTER时表行的错误排序,表将使用正确的数据重建,但排序顺序与索引顺序关系不大。...( PG13.9 在执行ALTER TABLE ATTACH PARTITION时修复构建每个分区外键约束的bu PG13.9 修复在创建分区索引时匹配索引表达式和谓词的错误 PG13.9 修复为每个分区外键约束生成约束名称的...PG13.14 修复在 PlaceHolderVars 中错误包装子查询输出表达式的问题,此修复解决了在子查询位于外连接下方且其输出列横向引用了外连接范围外的内容时产生错误结果的问题。

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

    SQL表之间的关系

    定义关系会自动将外键约束投影到SQL。可以在类定义中添加显式外键定义(对于关系未涵盖的情况)。可以使用CREATE TABLE或ALTER TABLE命令添加外键。...可以使用ALTER TABLE命令删除外键。用作外键引用的RowID字段必须是公共的。引用隐藏的RowID?有关如何使用公用(或专用)RowID字段定义表的信息。一个表(类)的外键最大数目为400。...外键引用完整性检查外键约束可以指定更新或删除时的引用操作。 在CREATE TABLE reference action子句中描述了使用DDL定义这个引用操作。...参照完整性检查失败会生成如下错误:错误#5540:SQLCODE:-124消息:表'HealthLanguage.FKey2'中至少存在1行,该行引用键NewIndex1-外键约束'NewForeignKey1...默认情况下,当删除带有外键的行时,InterSystems IRIS将在相应的被引用表的行上获取长期(直到事务结束)共享锁。这样可以防止在引用行上的DELETE事务完成之前对引用行进行更新或删除。

    2.5K10

    MySQL:外键与复制系统的相遇的挑战与应对

    通过外键,我们可以在不同的表之间建立关系,并且确保数据的完整性不会因为错误的操作而受损。 外键与复制的冲突 在有外键约束的情况下进行MySQL复制可能会遭遇一些问题。...如果在主服务器上更新或删除了某些行,而这些行的外键在从服务器上还没有得到更新,那么可能会出现复制错误。...外键约束检查失败:在从服务器上应用变更时,如果相关的外键数据尚未到位,可能会导致外键约束检查失败,从而使复制进程暂停。...应对策略 面对外键和复制的挑战,我们可以采取以下一些策略来改善或解决问题: 避免使用外键:在设计数据库结构时,尽量减少或避免使用外键约束,以简化复制过程。...使用GTID复制:GTID复制提供了更好的事务一致性保证,可以帮助解决由于外键约束导致的复制问题。 监控和警告:建立有效的监控和警告系统,以便在出现复制错误时及时得知,并采取相应的修复措施。

    24720

    MySQL学习笔记(长期更新)

    约束类型: 默认约束:插入时如果没有指定值,则插入默认值 主键约束:保证数据的唯一性 外键约束:预防破坏表之间连接的行为 非空约束 :字段值不能为空 唯一性约束:字段值不能重复 自增约束:字段在插入时自动.../image-20210602212346409.png)] 外键约束 从表中定义定义的外键指定外键字段、对应主表中的字段,MySQL会根据外键约束的定义,监控主表中数据的删除操作,如果发现要删除的主表记录...,正在被从表中某条记录的外键字段所引用,MySQL会提示错误,从而保证关联数据不会丢失。...正确使用事务,保证关联操作同时成功或同时失败回滚。...子查询按返回结果集进行分类: 表子查询:返回的结果是一个行的集合,N行N列,(N>=1)。表子查询经常用于父查询的FROM子句中。 行子查询:返回的结果是一个列的集合,一行N列,(N>=1)。

    96310

    Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)

    (如果函数失败,则查询再次变为本地。)读取可以正常继续,一旦函数提交,将变为分布式查询。 分布表 A 和 B 时,其中 A 对 B 有外键,首先需对目标表 B 设置分布键。...如果无法以正确的顺序分布,则删除外键,分布表,然后重新创建外键。 表分布后,使用 truncate_local_data_after_distributing_table 函数删除本地数据。...将它们添加到非分布列将产生错误(请参阅无法创建唯一性约束)。...这个例子展示了如何在分布式表上创建主键和外键: -- -- Adding a primary key -- -------------------- -- We'll distribute these.... */ 稍后,在非高峰时段,数据库管理员可以尝试修复错误行并重新验证约束。

    2.8K20

    Citus 11 官方手册脑图 - PostgreSQL 超大规模分布式数据库解决方案上手指南

    确定表的类型 为迁移准备源表 添加分布键 回填新创建的列 准备申请 Citus 设置 Development Citus 集群 在键中包含分布列 向查询添加分布键 Ruby on Rails Django.../修改列 添加/删除约束 使用 NOT VALID 约束 添加/删除索引 类型和函数 手动修改 摄取、修改数据 (DML) 插入数据 “From Select” 子句(分布式汇总) COPY 命令(批量加载...无法接收查询结果 解决方法 取消事务,因为它涉及分布式死锁 解决方法 无法连接到服务器:无法分配请求的地址 解决方法 SSL 错误:证书验证失败 解决方法 无法连接到任何活动的放置 解决方法 剩余的连接槽保留给非复制超级用户连接...解决方法 PgBouncer 无法连接到服务器 解决方法 关系 foo 没有被分发 解决方法 不支持的子句类型 解决方法 在事务中执行第一个修改命令后,无法打开新连接 解决方法 无法创建唯一性约束 解决方法...对数据进行哈希分区时如何选择分片数? 如何更改哈希分区表的分片数? citus 如何支持 count(distinct) 查询? 分布式表在哪些情况下支持唯一性约束?

    4.4K30

    SQL命令 UPDATE(一)

    如果插入请求失败由于违反唯一键(字段(s)的一些独特的关键,存在这一行已经有相同的值(s)为插入指定的行),然后它会自动变成一个更新请求这一行,并插入或更新使用指定的字段值来更新现有的行。...SQLCODE错误 默认情况下,多行UPDATE是一个原子操作。 如果不能更新一行或多行,则UPDATE操作失败,不会更新任何行。...尝试更新属于分片键一部分的字段会产生SQLCODE -154错误。 如果更新将违反字段的唯一性约束,则不能更新字段值。...试图更新一个字段(或一组字段)的值,使更新违反惟一性约束或主键约束,将导致SQLCODE -120错误。 如果字段具有UNIQUE数据约束,或者如果惟一字段约束已应用于一组字段,则返回此错误。...如果更新其中一个指定的行会违反外键引用完整性(并且没有指定%NOCHECK), UPDATE将无法更新任何行,并发出SQLCODE -124错误。

    2.9K20

    编写高效SQL的三个基础原则

    在本文中,我将通过为表命名并通过规范化和约束避免数据错误,为高效的SQL编写奠定基础。 本系列的第二部分将介绍如何构建SQL以使其更易于阅读和调试。因此,让我们首先了解如何奠定基础。...前三种范式是: 第一范式 (1NF): 每一行和每一列都存储单个值,并且没有重复的行。第二范式 (2NF): 没有依赖于主键或唯一键一部分的列。...查找和修复这些错误非常耗时。从一开始就创建约束可以避免这种痛苦。 主要的约束包括: 主键: 确保值是强制性和唯一的。一个表只能有一个主键。唯一约束: 与主键类似,唯一约束阻止您存储重复值。...与主键不同,您可以在唯一列中存储空值,并且一个表可以有多个唯一约束。外键: 定义父子关系。外键指向子表中的列到父表中的主键或唯一约束。有了这个,您就不能拥有孤立的行。...如果是这样,添加约束将失败,您将需要花费大量时间来修复它。幸运的是,您可以使用一个技巧来阻止更多无效数据进入: 创建未验证的约束。 这些忽略现有数据,并且仅将规则应用于新数据。

    6700

    编写高效SQL的三个基础原则

    在本文中,我将通过为表命名并通过规范化和约束避免数据错误,为高效的SQL编写奠定基础。 本系列的第二部分将介绍如何构建SQL以使其更易于阅读和调试。因此,让我们首先了解如何奠定基础。...前三种范式是: 第一范式 (1NF): 每一行和每一列都存储单个值,并且没有重复的行。第二范式 (2NF): 没有依赖于主键或唯一键一部分的列。...查找和修复这些错误非常耗时。从一开始就创建约束可以避免这种痛苦。 主要的约束包括: 主键: 确保值是强制性和唯一的。一个表只能有一个主键。唯一约束: 与主键类似,唯一约束阻止您存储重复值。...与主键不同,您可以在唯一列中存储空值,并且一个表可以有多个唯一约束。外键: 定义父子关系。外键指向子表中的列到父表中的主键或唯一约束。有了这个,您就不能拥有孤立的行。...如果是这样,添加约束将失败,您将需要花费大量时间来修复它。幸运的是,您可以使用一个技巧来阻止更多无效数据进入: 创建未验证的约束。 这些忽略现有数据,并且仅将规则应用于新数据。

    8510

    MySQL数据库操作教程

    外键约束的参照操作及功能: 1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行 2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL (ps.如果使用该选项,...在CONSTRAINT后,有个名称即为外键约束名 ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; SHOW CREATE TABLE 表名; --发现外键约束已经删除,但是还会存在索引...外键约束的参照操作及功能: 1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行 2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL (ps.如果使用该选项,...3.子查询的外层查询可以是:SELECT,INSERT,UPDATE,SET或DO。 4.子查询返回值,可以为标量、一行、一列或子查询。...[NOT] EXISTS的子查询(不常用) 如果子查询返回任何行,EXISTS将返回TRUE; 否则为FALSE 1.多表更新 --基本格式 UPDATE table_references SET

    4.8K10

    MySQL8 中文参考(二)

    例如,如果定义了RESTRICT类型的约束,并且有一个子行具有多个父行,InnoDB不允许删除任何父行。...在插入、删除或更新多行的 SQL 语句中,外键约束(如唯一约束)会逐行检查。在执行外键检查时,InnoDB会在必须检查的子记录或父记录上设置共享的行级锁。...这意味着不可能使用外键删除引用自身的行。 没有存储引擎,包括InnoDB,识别或执行引用完整性约束定义中使用的MATCH子句。...因此,在 MySQL 中,约束处理与其他数据库管理系统有些不同。当在非事务表中插入或更新了大量行且发生错误时,无法回滚更改时,我们必须处理这种情况。...或 UPDATE)可能违反主键、唯一键或外键约束而导致错误。

    21010

    PostgreSQL 哪些版本尽量避免使用,版本更新重点明晰(PG12)

    /bug fixed 链接/注释 12.1 修复了 reindex concurrently 的 bug 在获取锁和释放锁上的问题 12.1 修复了 vacuum 在工作中错误的冻结正在运行的事务的问题...fixed 链接/注释 12.2 bug fixed 分区表中如果使用级联中的表被截断引起的问题 https://www.postgresql.org/docs/release/12.2/ 12.2 修复无法将外键约束附加到子分区的问题...12.2 逻辑复制中在表进行 DDL 变更后导致的订阅失败或崩溃的问题 Fix crash in logical replication subscriber after DDL changes on...columns in partitioned tables (Peter Eisentraut) 12.8 版本号 更新要点/bug fixed 链接/注释 12.8 修复多个 SQL 命令的错误问题...attempted page deletion in a btree index fails to find the page's parent downlink (Peter Geoghegan) 12.13 修复事务和子事务运行中可能产生的错误

    31010

    SQL命令 CREATE TABLE(五)

    在父/子关系中,没有定义的子项顺序。应用程序代码不得依赖于任何特定顺序。 可以定义引用以只读方式装载的数据库中的类的外键约束。...SQL支持以下外键引用操作: NO ACTION SET DEFAULT SET NULL CASCADE NO ACTION-删除行或更新被引用表中的键值时,将检查所有引用表,以查看是否有任何行引用要删除或更新的行...如果是,则删除或更新失败。(如果外键引用自身,则此约束不适用。)。默认情况下不执行任何操作。无操作是切片表支持的唯一引用操作。...SET NULL-删除行或更新被引用表中的键值时,将检查所有引用表,以查看是否有任何行引用要删除或更新的行。如果是,则该操作会导致引用要删除或更新的行的外键字段设置为NULL。外键字段必须允许空值。...SET DEFAULT-删除行或更新被引用表中的键值时,将检查所有引用表,以查看是否有任何行引用要删除或更新的行。如果是,则该操作会导致引用要删除或更新的行的外键字段设置为该字段的默认值。

    1.8K50

    MySQL 中的 REPLACE INTO语法

    FROM another_table; REPLACE INTO 的工作机制 检查是否有冲突: MySQL 会检查插入行的主键或唯一键约束是否冲突。 如果没有冲突: 行被直接插入。...如果有冲突: MySQL 会先删除冲突的行。 然后插入新的行。 注意: 删除和插入操作会触发相应的 DELETE 和 INSERT 触发器。 删除旧行时,可能导致主键或唯一键被重新分配。...与 INSERT 的比较 特性 INSERT REPLACE INTO 存在冲突时的行为 返回错误或忽略插入 删除冲突的记录,并插入新的记录 使用场景 数据插入 插入数据并自动覆盖冲突记录 是否触发删除触发器...否 是(当删除旧记录时会触发 DELETE 触发器) 主键/唯一键约束 插入失败或更新(INSERT ON DUPLICATE KEY UPDATE) 删除冲突记录后插入新记录 注意事项 性能问题...外键约束: 如果表定义了外键约束,删除旧记录可能导致外键相关的约束失败。 数据丢失: REPLACE INTO 会直接删除冲突的行,如果删除的行中包含重要数据,可能导致数据丢失。

    10010

    Mysql错误代码大全

    1016错误:文件无法打开,使用后台修复或者使用phpmyadmin进行修复。...1062:字段值重复,入库失败 1169:字段值重复,更新记录失败 1177:打开数据表失败 1180:提交事务失败 1181:回滚事务失败 1203:当前用户和数据库建立的连接已到达数据库的最大连接数...,请增大可用的数据库连接数或重启数据库 1205:加锁超时 1211:当前用户没有创建用户的权限 1216:外键约束检查失败,更新子表记录失败 1217:外键约束检查失败,删除或修改主表记录失败 1226...MYSQL当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库 1205:MYSQL加锁超时 1211:MYSQL当前用户没有创建用户的权限 1216:MYSQL外键约束检查失败...,更新子表记录失败 1217:MYSQL外键约束检查失败,删除或修改主表记录失败 1226:MYSQL当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器 1227:MYSQL权限不足,您无权进行此操作

    4.7K40

    SQL命令 INSERT(三)

    试图将子查询指定为字段值将导致SQLCODE -144错误。 插入操作 Privileges 要将一行或多行数据插入到表中,您必须拥有该表的表级特权或列级特权。...尝试为具有列级ReadOnly (SELECT或REFERENCES)权限的字段插入值将导致SQLCODE -138错误:无法为只读字段插入/更新值。...此设置不适用于用NOCHECK关键字定义的外键。 在INSERT操作期间,对于每个外键引用,都会在引用表中相应的行上获得一个共享锁。 在执行引用完整性检查和插入该行时,此行被锁定。...这确保了引用的行不会在引用完整性检查和插入操作完成之间发生更改。 但是,如果指定了%NOLOCK关键字,则不会对指定的表或引用表中相应的外键行执行锁操作。...行级安全性 IRIS行级安全性允许INSERT添加行,即使定义了行安全性,也不允许随后访问该行。

    2.5K10

    mysql日常面试题总结

    如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。ACID 四大特性,原子性、隔离性、一致性、持久性。 13.了解XSS攻击吗?如何防止?...特点: · 行锁设计、支持外键,支持事务,支持并发,锁粒度是支持mvcc得行级锁; MyISAM存储引擎: 是MySQL官方提供的存储引擎,主要面向OLAP(Online Analytical Processing...外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。...主键、外键和索引的区别?...主键、外键和索引的区别 定义: 主键--唯一标识一条记录,不能有重复的,不允许为空 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引--该字段没有重复值,但可以有一个空值

    63420
    领券