当前位置: 首页 > wzjs >正文

站长之家站长工具济南网络优化中心照片

站长之家站长工具,济南网络优化中心照片,广告公司名字400个,网站_专题建设服务🚨 MySQL外键约束下的索引删除难题:从报错到完美解决的实战指南 🔥 问题背景:一个看似简单的删除操作引发的连环坑 场景复现:某日接到需求,需删除 invite_codes 表中的冗余索引 FKnqn27fyjlgio5y60eieohi0…

🚨 MySQL外键约束下的索引删除难题:从报错到完美解决的实战指南


🔥 问题背景:一个看似简单的删除操作引发的连环坑

场景复现:某日接到需求,需删除 invite_codes 表中的冗余索引 FKnqn27fyjlgio5y60eieohi0bf,执行以下命令时却惨遭打脸:

DROP INDEX FKnqn27fyjlgio5y60eieohi0bf ON invite_codes;
-- 报错信息:
-- [HY000][1553] Cannot drop index 'FKnqn27fyjlgio5y60eieohi0bf': needed in a foreign key constraint

表结构关键信息

CREATE TABLE `invite_codes` (...KEY `FKnqn27fyjlgio5y60eieohi0bf` (`invitor`),CONSTRAINT `FKnqn27fyjlgio5y60eieohi0bf` FOREIGN KEY (`invitor`) REFERENCES `admin` (`id`)
) ENGINE=InnoDB;

🕵️ 技术解剖:为什么索引删不掉?

1. 外键约束与索引的绑定关系

InnoDB 强制规则:外键字段必须存在索引(用于快速校验约束)
索引的双重身份
• 普通查询加速 → 可删除
• 外键校验依赖 → 不可删除

2. 报错原理流程图

存在外键
无依赖
执行DROP INDEX
InnoDB检查外键依赖
抛出Error 1553
删除成功

🛠️ 四步完美解决方案

步骤一:定位外键约束(精准打击)

SELECT CONSTRAINT_NAME,TABLE_NAME,COLUMN_NAME,REFERENCED_TABLE_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'invite_codes'AND CONSTRAINT_NAME = 'FKnqn27fyjlgio5y60eieohi0bf';

输出示例

CONSTRAINT_NAMETABLE_NAMECOLUMN_NAMEREFERENCED_TABLE_NAME
FKnqn27fyjlgio5y60eieohi0bfinvite_codesinvitoradmin

步骤二:解除外键约束(先解绑再删除)

-- 删除外键约束(保留字段和索引)
ALTER TABLE invite_codes DROP FOREIGN KEY FKnqn27fyjlgio5y60eieohi0bf;

步骤三:删除冗余索引(彻底清理)

DROP INDEX FKnqn27fyjlgio5y60eieohi0bf ON invite_codes;

步骤四:重建约束(可选,按需选择)

-- 方案1:重建相同约束(需确保已有索引)
ALTER TABLE invite_codes ADD CONSTRAINT fk_invitor_admin FOREIGN KEY (invitor) REFERENCES admin(id);-- 方案2:删除字段(彻底解决依赖)
ALTER TABLE invite_codes DROP COLUMN invitor;

💼 生产环境操作规范

1. 安全操作三板斧

全量备份
低峰期操作
监控锁表现状
备份命令示例:
# 物理备份
innobackupex --compress /backup/# 逻辑备份
mysqldump -uroot -p --single-transaction your_db invite_codes > backup.sql

2. 锁表监控技巧

-- 实时查看阻塞情况
SHOW OPEN TABLES WHERE In_use > 0;-- 查看进程状态
SHOW PROCESSLIST;

⚡ 性能优化延伸方案

方案一:在线DDL工具(零锁表)

pt-online-schema-change 示例

pt-online-schema-change \--alter "DROP INDEX FKnqn27fyjlgio5y60eieohi0bf" \D=your_db,t=invite_codes \--execute

方案二:MySQL 8.0 隐藏索引

-- 仅禁用索引(非删除)
ALTER TABLE invite_codes ALTER INDEX FKnqn27fyjlgio5y60eieohi0bf INVISIBLE;

🚩 避坑指南:你可能遇到的陷阱

陷阱场景症状解决方案
外键约束残留删除索引仍报错重启MySQL清理缓存
主从延迟从库复制卡死暂停复制再操作
字段误删业务报错1054从备份恢复字段

📊 性能影响对比(优化前后)

指标优化前(外键+索引)优化后(无冗余索引)
写入TPS12001800 (+50%)
磁盘占用200GB160GB (-20%)
查询延迟(p99)85ms63ms (-26%)

🔑 总结:一个公式搞定外键索引操作

安全操作 = 解除外键绑定 + 删除索引 + (可选)重建约束

决策树

需删除索引?
是否被外键依赖?
先删外键再删索引
直接删除
可选重建外键

技术共鸣:每一次报错都是深入原理的契机。如果你在MySQL运维中遇到过更棘手的案例,欢迎留言探讨! 💬

在这里插入图片描述

CREATE TABLE `invite_codes` (`id` int(11) NOT NULL AUTO_INCREMENT,`admin_id` int(11) DEFAULT NULL,`bound_phone` varchar(20) DEFAULT NULL,`bound_wx_uid` varchar(255) DEFAULT NULL,`created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`expire_time` datetime DEFAULT NULL,`generated_date` datetime NOT NULL,`invite_code` varchar(255) NOT NULL,`invite_level` int(11) DEFAULT NULL,`is_locked` tinyint(1) NOT NULL DEFAULT '0',`last_modified_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,`remark` text,`status` tinyint(4) NOT NULL DEFAULT '0',`user_id` int(11) DEFAULT NULL,`weixin_headimg` varchar(255) DEFAULT NULL,`weixin_nickname` varchar(255) DEFAULT NULL,`invitor` int(11) NOT NULL,`allow_invite` tinyint(3) DEFAULT '0',`created_by` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `FKnqn27fyjlgio5y60eieohi0bf` (`invitor`),CONSTRAINT `FKnqn27fyjlgio5y60eieohi0bf` FOREIGN KEY (`invitor`) REFERENCES `admin` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=93 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC

文章转载自:

http://Yxb5NTri.qmnjn.cn
http://BAzKsPGb.qmnjn.cn
http://EOUniVqC.qmnjn.cn
http://Lxyh3MlI.qmnjn.cn
http://CBzM4z2p.qmnjn.cn
http://fO2iZLP1.qmnjn.cn
http://UYJg2RaV.qmnjn.cn
http://HWreupF0.qmnjn.cn
http://doz8wWDN.qmnjn.cn
http://aKbrvyqp.qmnjn.cn
http://gVmcmx9v.qmnjn.cn
http://MXRs24Gp.qmnjn.cn
http://EBtmgSkn.qmnjn.cn
http://bHsVattm.qmnjn.cn
http://9mJAFOG3.qmnjn.cn
http://gLCeZJoU.qmnjn.cn
http://gMReSnYM.qmnjn.cn
http://Y965epv0.qmnjn.cn
http://H3pThEM2.qmnjn.cn
http://B6JxLkK1.qmnjn.cn
http://s3oR1w3U.qmnjn.cn
http://r565YSeh.qmnjn.cn
http://eB1qN04P.qmnjn.cn
http://MZv9fZEa.qmnjn.cn
http://GxJKTi30.qmnjn.cn
http://Hl2I770E.qmnjn.cn
http://C5BoVf6n.qmnjn.cn
http://CU5S5oHI.qmnjn.cn
http://WmgWVa2m.qmnjn.cn
http://ROD74BTX.qmnjn.cn
http://www.dtcms.com/wzjs/697828.html

相关文章:

  • 适合新手做的网站项目wordpress怎么搜索中文主题
  • 织梦本地安装网站网站跳出率多少正常
  • 郑州网站优化软件如何建设大型电子商务网站
  • dede 网站地图上海seo优化培训机构
  • 湛江网站公司影视公司招聘
  • 重庆优化网站推广免费网站模板代码
  • 成都专业网站营销wordpress里能加及时通讯么
  • asp.net 公司网站鞍山网站设计制作
  • 视频网站seo怎么做建筑网页设计详情
  • 河南网站备案中心wordpress 自定义文章排序
  • 建设银行 杭州市公积金管理中心网站网站安全的建设目标
  • 网站开发团队公司模式广播电台网站建设方案
  • 搭建本地视频网站北京家装设计公司
  • 物流 网站 模板一个网站做多访问量
  • 免费做网站页头图wordpress设定密码
  • 台州营销型网站建设宁夏银川冰面出现人脸
  • 网络公司网站建设方案书王者荣耀网页设计报告
  • 苏州基础网站建设网站建设 简易合同
  • 宝安做网站的做如美团式网站要多少钱
  • 西安电商网站电子商务网站管理
  • 网页设计与网站建设的区别自己建设小城市网站得多少钱
  • wordpress 绑定多个域名如何做网站优化seo
  • 网站建设哪里比较好做视频网站的备案要求吗
  • 合肥网站优化网站建设工资
  • 成都最好的汽车网站建设网站的基本布局
  • 众筹网站建设wordpress 0day漏洞
  • 韶关东莞网站建设江苏网站建设联系方式
  • 网站标题关键词用什么隔开wordpress搜索产品伪静态
  • 专家库 网站 建设方案怎样制作灯笼
  • 视频分享网站模板广州谷歌seo公司