登录  /  注册

mysql错误1022怎么办

藏色散人
发布: 2023-02-16 09:43:17
原创
1919人浏览过

mysql错误1022是外键名称重复导致的,其解决办法:1、通过“select * from information_schema.key_column_usage  where constraint_name='...'”命令查找重复外键名称;2、将外键名重新命名即可。

mysql错误1022怎么办

本教程操作环境:Windows10系统、MySQL5.7版本、Dell G3电脑。

mysql错误1022怎么办?

mysql报错Error Code: 1022. Can't write; duplicate key in table `xxx`

说明:此错误是外键名称重复了

查找重复外键名称,哪里被用到了,sql如下:

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE  where CONSTRAINT_NAME='重复的外键名称'
登录后复制

如果没问题,则重新命名即可。

相关拓展:

1 外键的定义

外键是某个表中的一列,它包含在另一个表的主键中。

外键也是索引的一种,是通过一张表中的一列指向另一张表中的主键,来对两张表进行关联。

一张表可以有一个外键,也可以存在多个外键,与多张表进行关联。

2 外键的作用

外键的主要作用是保证数据的一致性和完整性,并且减少数据冗余。

主要体现在以下两个方面:

  • 阻止执行

从表插入新行,其外键值不是主表的主键值便阻止插入。

从表修改外键值,新值不是主表的主键值便阻止修改。

主表删除行,其主键值在从表里存在便阻止删除(要想删除,必须先删除从表的相关行)。

主表修改主键值,旧值在从表里存在便阻止修改(要想修改,必须先删除从表的相关行)。

  • 级联执行

主表删除行,连带从表的相关行一起删除。

主表修改主键值,连带从表相关行的外键值一起修改。

3 外键创建限制

父表必须已经存在于数据库中,或者是当前正在创建的表。

如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。

必须为父表定义主键。

外键中列的数目必须和父表的主键中列的数目相同。

两个表必须是 InnoDB 表,MyISAM 表暂时不支持外键。

外键列必须建立了索引,MySQL 4.1.2 以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显式建立。

外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如 int 和tinyint 可以,而 int 和 char 则不可以。

推荐学习:《MySQL视频教程

以上就是mysql错误1022怎么办的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号