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

1822,“无法添加外键约束。缺少约束的索引

1822是MySQL数据库中的一个错误代码,表示无法添加外键约束,因为缺少约束的索引。

外键约束是用于维护表与表之间关系的一种约束。它可以确保在一个表中的某个列的值必须在另一个表的某个列中存在。通过外键约束,可以实现数据的完整性和一致性。

在MySQL中,要添加外键约束,需要满足以下条件:

  1. 父表和子表之间的列类型必须匹配。
  2. 父表中被引用的列必须有索引。
  3. 父表中被引用的列必须是唯一的。

然而,当遇到1822错误时,表示无法添加外键约束,因为缺少约束的索引。这通常是由于以下原因导致的:

  1. 父表中被引用的列没有创建索引。
  2. 父表中被引用的列不是唯一的。

解决这个问题的方法是:

  1. 确保父表中被引用的列已经创建了索引。可以使用CREATE INDEX语句来创建索引。
  2. 确保父表中被引用的列是唯一的。可以使用UNIQUE约束来确保列的唯一性。

在腾讯云的MySQL数据库服务中,可以使用云数据库MySQL来管理和维护MySQL数据库。具体的产品介绍和使用方法可以参考腾讯云官方文档:云数据库MySQL

总结: 1822错误代码表示无法添加外键约束,因为缺少约束的索引。解决该问题的方法是确保父表中被引用的列已经创建了索引,并且是唯一的。在腾讯云中,可以使用云数据库MySQL来管理和维护MySQL数据库。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

本文为作者翻译文章,原文链接:Dealing with MySQL Error Code 1215: “Cannot add foreign key constraint” 在给一个表创建时,MySQL...总是会出现提示: ERROR 1215 (HY000): Cannot add foreign key constraint 这信息基本是啥都没说,下面就来说说几种常见导致1215错误情况: 父表不存在...,但索引是一个多列索引,同时该列不是该做索引最左列mysql> CREATE TABLE parent ( -> id INT(10) NOT NULL PRIMARY KEY, -> column..._3), -> KEY column_4_idx (column_4) -> ) ENGINE INNODB; #错误:因为父表column_3列不是column_2_column_3_idx索引最左列...parent_virt INT(10) NOT NULL, FOREIGN KEY (parent_virt) REFERENCES parent(column_virt) ) ENGINE INNODB; 创建失败更多提示信息

21.2K21

MySQL数据库——表约束(非空约束、唯一约束、主键约束约束)

目录 1 表约束 约束,是对表中数据进行限定,保证数据正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 约束:foreign...以上仍然存在一个问题,当在员工表中输入不存部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用约束来解决。 【概念】什么是约束?...,就是从表中与主表主键对应那一列,如:员工表中dep_id,其中,主表是一方,用来约束别人表,从表可以是多方,被别人约束表。 注意:可以为NULL,但是不能是不存在键值。 ?...,在员工表中添加一个不在部门表范围内内容,则无法保存: ?...,同时希望自动改动员工表中id,这时就需要进行级联操作,需要在添加时候设置级联: 添加级联操作:ALTER TABLE 表名称 ADD CONSTRAINT 键名称 FOREIGN KEY (

14.2K21
  • 【说站】mysql约束作用

    mysql约束作用 1、约束是保证一个或两个表之间参考完整性,是构建在一个表两个字段或两个表两个字段之间参考关系。 2、通过约束,确保表格之间数据完整性和准确性。...实例 -- 约束操作 -- 关键字 foreighn key -- 概述:就是让两个以及多个表之间建立联系 -- 创建表时加入 CREATE TABLE tab( id int PRIMARY...KEY , -- 主键id 也是连接tab表 age INT );   -- 删除外约束 ALTER TABLE     tab -- 表名 DROP FOREIGN KEY     tab_tab1..._id; -- 键名称   -- 创建表后添加约束 ALTER TABLE tab -- 从表 add CONSTRAINT tab_tab1_id  -- 键名 FOREIGN KEY (t_id...) -- 列名 REFERENCES tab1(id); -- 主表(列名) 以上就是mysql约束作用,希望对大家有所帮助。

    4.6K20

    laravel5.6中约束示例

    场景 如果现在有两张表,一张表是文章表articles,一张表是分类表categories,其中在文章表中有一个分类字段category_id,现在想在删除分类表中某一分类时,该分类下所有文章也一起被删除...,那么这时候就可以用到外约束 具体用法如下: 给文章表添加约束 $table- unsignedInteger('category_id')- comment('文章所属分类|select');...$table- foreign('category_id')- references('id')- on('categories')- onDelete('cascade'); 其中需要注意是分类表categories...中主键字段id与文章表articles中字段category_id数据类型或者是数据长度要保持一致,因为作为主键id值是从1开始自增,所以在被其绑定字段数据类型就不能使用integer...,而要改用unsignedInteger 以上这篇laravel5.6中约束示例就是小编分享给大家全部内容了,希望能给大家一个参考。

    1.7K31

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

    文章目录 前言 一、插入新数据时报错约束? 二、对于出错 SQL 语句分析 三、对于外码约束分析 四、如何处理约束?...总结 ---- 前言 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束情况,为什么会产生这样问题?那我们该如何处理这一问题呢?依据又是什么?...本篇文章带你进一步来深度剖析,并带着你思路来设计解决方案。 ---- 说明:本次案例案例情景是传统数据库表:学生-课程数据库。 一、插入新数据时报错约束?...三、对于外码约束分析 我们根据数据库定义参照完整性规则得知: cpno 取值不为空情况下(如上 cpno=‘5’),与其对应主键 cno 在参照表中必须存在。...但是我们反观上面操作,第一个插入就是 cno=‘1’ 数据,cno=‘5’ 还没有插入,很显然不满足参照完整性规则。 四、如何处理约束

    3.1K20

    django在开发中取消约束实现

    # 在setting设置 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给关系传值...,删除外关系 反查: 在表关系里 related_name = ‘反查name’,自己不设置,django也会默认设置为class小写名字+_set , ex: book_set....(数据库字段名字room_number_id)值,将相对应值直接赋值给该字段      class_number = ClassNumber.object.get("id=1").room_number...s = Students(name='xiaodong1', age=10, gender="男") s.save() # 先存新增数据 s.teacher.add(t) # 再给新增数据添加多对多关系...s.teacher.remove(x) return HttpResponse("ojbk") 以上这篇django实现在开发中取消约束就是小编分享给大家全部内容了,希望能给大家一个参考。

    3.7K10

    【重学 MySQL】六十六、约束使用

    当创建约束时,系统默认会在所在列上建立对应普通索引。但是索引名是约束名。...(根据查询效率很高) 删除外约束后,必须手动删除对应索引 约束创建方式 在创建表时设置约束 CREATE TABLE child_table ( child_column...通过ALTER TABLE添加约束 如果表已经存在,并且需要添加约束,可以使用ALTER TABLE语句。...答:建约束,你操作(创建表、删除表、添加、修改、删除)会受到限制,从语法层面受到限制。例如:在员工表中不可能添加一个员工信息,它部门值在部门表中找不到。...例如:在员工表中,可以添加一个员工信息,它部门指定为一个完全不存在部门。 问题3:那么建和不建约束和查询有没有关系? 答:没有 在 MySQL 里,约束是有成本,需要消耗系统资源。

    7810

    MySQL学习之路:数据完整性-约束

    CHECK约束是列输入数据值验证规则,列中输入数据必须满足CHECK约束条件,否则无法写入数据库。...3 gcode varchar(50) 否 商品编号 4 gname varchar (200) 否 商品名称 5 gprice decimal(20,2) 商品价格 使用SQL语句添加约束...REFERENCES category(cid); Query OK, 0 rows affected (0.08 sec) Records: 0 Duplicates: 0 Warnings: 0 约束级联更新和删除...约束实现了表间引用完整性,当主表中被引用列值发生变化时,为了保证表间数据一致性,从表中与该值相关信息也应该相应更新,这就是约束级联更新和删除。...SET NULL:更新和删除操作表记录时,从表中相关记录对应值设置为NULL。 NO ACTION:不进行任何操作 RESTRICT:拒绝主表更新或修改关联列。

    28020

    MySQL实战七:你不知道约束使用!

    2.2 2.2.1 创建 (1)不带别名,数据库自动生成 首先创建department表: CREATE TABLE department ( dept_name varchar...(2)删除外 alter table instructor drop foreign key fk_dept_name; (3)添加 alter table instructor add constraint...,用来设置当主键表中被参考列数据发生变化时,表中响应字段变换规则。...学习 cascade 表示级联操作,就是说,如果主键表中被参考字段更新,表(子表)中也更新,主键表(父表)中记录被删除,表(子表)中改行也相应删除。...而on update只能删除子表数据,不能删除父表主键数据,只能更新父表主键,同时父子表数据都会被更新,但是在子表上做更新操作无效。

    4.3K20

    SQL反模式学习笔记5 约束【不用钥匙入口】

    目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用原因有一下几点: 1、数据更新有可能和约束冲突; 2、当前数据库设计如此灵活,以至于不支持引用完整性约束...; 3、数据库为建立索引会影响性能; 4、当前使用数据库不支持。...反模式:无视约束,即不使用约束 省略约束能使得数据库设计更加简单、灵活,或者执行更加高效,但是你不得不在其他方面付出相应代价, 必须增加额外代码来手动维护引用完整性...会自动完成这些,并且会使用这父表索引尽可能高效完成) 3、有人说不要用影响数据库效率。...合理使用反模式: 如果数据库产品不支持约束功能,则不得不使用别的方法来保持引用完整性,比如使用监控脚本。 同样也存在一些极度灵活数据库设计,无法用来表示其对应关系。

    82130

    轻松学习SQL约束核心原理和实用技巧

    SQL 约束-约束简介约束(FOREIGN KEY,缩写 FK)是用来实现数据库表参照完整性。...相关概念主键:可以唯一标识一条记录:从表中与主表主键对应字段主表:所指向表,约束其他表表从表:所在表,被约束表价值:建立主表与从表关联关系,为两个表数据建立连接,约束两个表中数据一致性和完整性建立约束创建表时添加约束...:CONSTRAINT [约束名称] FOREIGN KEY (字段) REFERENCES [主表名称(主键字段)]添加约束:ALTER TABLE [表名] ADD CONSTRAINT...KEY [约束名称]注意事项从表数据类型必须与主表主键一致删除数据时,需先删除从表数据再删除主表数据添加数据时先添加主表数据,再添加从表数据#删除外约束ALTERTABLEemp_partDROPFOREIGNKEYemp_dept...DELETEFROMdeptWHEREid=2级联删除删除主表数据同时,也删除掉从表中相关数据ON DELETE CASCADE#创建员工信息表并添加级联删除约束CREATETABLEemp_part

    28210

    Oracle查询存在外约束但未创建对应索引情况

    to Check for Foreign Key Locking Issues for a Specific User (Doc ID 1019527.6) 但也要注意,该脚本是查询当前连接用户存在外约束但未创建对应索引情况...--索引:(当前登陆用户) column con format a20 word_wrapped column idx format a20 word_wrapped column table_name...vi check_fk_info.sql --索引:(指定要查询用户) column con format a20 word_wrapped column idx format a20 word_wrapped...GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" Oracle规范是建议在业务用户下表存在外约束...实际也遇到过很多客户生产环境因没有创建索引而导致一些死锁和性能相关问题。

    85830

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

    文章目录 前言 一、插入新数据时报错约束? 二、对于出错 SQL 语句分析 三、对于外码约束分析 四、如何处理约束?...总结 ---- 前言 我们在使用 MySQL 数据库时,添加数据如果设计不合理很容易出现外码约束情况,为什么会产生这样问题?那我们该如何处理这一问题呢?依据又是什么?...本篇文章带你进一步来深度剖析,并带着你思路来设计解决方案。 ? ---- 本次案例案例情景是传统数据库表:学生-课程数据库。 一、插入新数据时报错约束?...我们在 Course 表中插入课程号为 1 数据时提示违反了约束。...但是我们反观上面操作,第一个插入就是 cno=‘1’ 数据,cno=‘5’ 还没有插入,很显然不满足参照完整性规则。 四、如何处理约束

    3K31

    多表间关系-一对多-多对多-一对一-约束

    多表间关系-一对多-多对多-一对一-约束 1. 表关系概述 现实生活中,实体与实体之间肯定是有关系,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。...我们管1一方,叫主表或1表. 我们管多个一方,叫从表或多表. 通常要在多一方添加一个字段,用于存放主表主键值,我们管这个字段叫字段....字段值必须为主表主键值,若为其他值,则没有意义. image-20200529101003797 用于限制字段取值必须为主表主键约束叫做-约束. 2....约束 5.1 什么是约束 一张表中某个字段引用另一个表主键 主表:约束别人 副表/从表:使用别人数据,被别人约束 5.2 创建 新建表时增加:[CONSTRAINT] [约束名称...-- 主表名(主键字段名) 表示参照主表中某个字段 已有表增加:ALTER TABLE 从表 ADD [CONSTRAINT] [约束名称] FOREIGN KEY (字段名) REFERENCES

    6K20

    数据库技术:MySQL 多表,约束,数据库设计,索引,视图,存储过程触发器,数据控制,数据备份与恢复

    主表:主键 id 所在表,约束别人表;从表:所在表,被约束表。...Create Foreign Key Constraint 添加约束,就会产生强制性数据检查,从而保证了数据完整性和一致性。...ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk; -- 再将约束添加回来 # 省略约束名称, 系统会自动生成一个约束名称 ALTER TABLE...); # 添加约束指向演员表主键 ALTER TABLE actor_role ADD FOREIGN KEY(aid) REFERENCES actor(id); # 添加约束指向角色表主键...实现方式:可以在任意一方添加一个,指向另一方主键。给设置唯一约束。 Multiple Tables Query What is multiple tables query?

    2.4K20
    领券