千家信息网

MySQL表rename引起外键问题解析

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本文主要给大家介绍MySQL表rename引起外键问题解析,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义角度出发,累计多年的实践经验可分享给大家。背景:由于zabbix监
千家信息网最后更新 2025年01月22日MySQL表rename引起外键问题解析

本文主要给大家介绍MySQL表rename引起外键问题解析,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义角度出发,累计多年的实践经验可分享给大家。

背景:
由于zabbix监控的问题图形展示很慢,对zabbix 库的events表进行了清理,清理过程采用了原表rename成bak表,重建events表后,将备份表部分数据导入到新表中。

后发现zabbix平台无法报警,无法恢复报警,日志类似报错: 2315:20190301:104933.609 [Z3005] query failed: [1452] Cannot add or update a child row: a foreign key constraint fails (`zabbix`.`event_recovery`, CONSTRAINT `c_event_recovery_1` FOREIGN KEY (`eventid`) REFERENCES `events_bak20190225` (`eventid`) ON DELETE CASCADE) [insert into event_recovery (eventid,r_eventid,correlationid,c_eventid,userid) values (4242559,4242581,null,null,null),(4242561,4242580,null,null,null),(4242447,4242580,null,null,null);

原来rename后,关联的外键表的约束竟然一并修改成了归档表的关联。
处理方法如下:
查看哪些表建立外键时关联了归档表

select  distinct TABLE_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_SCHEMA  ='zabbix' and CONSTRAINT_name != 'PRIMARY' and REFERENCED_TABLE_NAME like 'event%';+----------------+--------------------+-----------------------+| TABLE_NAME     | CONSTRAINT_NAME    | REFERENCED_TABLE_NAME |+----------------+--------------------+-----------------------+| acknowledges   | c_acknowledges_2   | events                || alerts         | c_alerts_2         | events                || alerts         | c_alerts_5         | events                || event_recovery | c_event_recovery_1 | events                || event_recovery | c_event_recovery_2 | events                || event_recovery | c_event_recovery_3 | events                || event_tag      | c_event_tag_1      | events_bak20190225    || problem        | c_problem_1        | events                || problem        | c_problem_2        | events                |+----------------+--------------------+-----------------------+

查看表结构:

show create table event_tag\G*************************** 1. row ***************************       Table: event_tagCreate Table: CREATE TABLE `event_tag` (  `eventtagid` bigint(20) unsigned NOT NULL,  `eventid` bigint(20) unsigned NOT NULL,  `tag` varchar(255) NOT NULL DEFAULT '',  `value` varchar(255) NOT NULL DEFAULT '',  PRIMARY KEY (`eventtagid`),  KEY `event_tag_1` (`eventid`),  CONSTRAINT `c_event_tag_1` FOREIGN KEY (`eventid`) REFERENCES `events_bak20190225` (`eventid`) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8

修改外键约束:

alter table event_tag drop FOREIGN KEY  c_event_tag_1;alter table event_tag add FOREIGN KEY  c_event_tag_1 (`eventid`) REFERENCES `events`(`eventid`) ON DELETE CASCADE;

zabbix好多外键,下次清理数据直接删除吧。

看了以上MySQL表rename引起外键问题解析介绍,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,大家可以继续关注行业资讯板块,会定期给大家更新行业新闻和知识,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。

问题 关联 数据 知识 行业 报警 解答 专业 东西 书籍 可在 图形 地方 备份 多年 实际 小时 平台 意义 文献 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河北移动基站数据库 对话模型部署在服务器上api 佛山社交软件开发哪家好 彩虹岛2009年服务器国服 智能互联网络技术就业薪资 考试服务器配置 迷你世界服务器过期了怎么办 计算机网络技术哪些国家发达 数据库如何创建取值范围 网络安全监测装置i型 倩女幽魂魅者数据库 300W戴尔服务器电源启动针脚 深圳普格软件开发有限公司 新华电脑网络技术工程师 数据库账套是什么格式mdf 联想rd550服务器故障灯亮 未成年攻击服务器 网络技术基础复习题 mysql数据库升级脚本编写 宝盈互联网科技 马赛克数据库恢复所使用的命令是 深圳市聚川网络技术有限公司 服务器正忙登录不上去 大数据内存数据库 0基础怎么学网络安全培训 数据库中用快捷键选一行 嘉兴服务器工控机厂家 崇明区正规软件开发有哪些 和平精英之前谁把服务器充爆过 软件开发提高开发质量
0