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

zabbix平台无法删除已停用主机的处理案例

在zabbix平台上删除已停用的主机,提示“SQL描述式执行已失败: "DELETE FROM items WHERE (itemid IN (.....)”,无法删除,本文为处理情况。

一、问题现象

在zabbix平台上删除已停用的主机,提示“SQL描述式执行已失败: "DELETE FROM items WHERE (itemid IN (.....)”,无法删除。弹出信息如下:

 弹窗信息为:

SQL描述式执行已失败: "DELETE FROM items WHERE (itemid IN ('46182','46183','46184','46185','46186','46187','46188','46189','48350','48351','48352','48353','48354','48355','48356','48357','48358','48359','48360','48361','125078','125079','125080'))"

    Undefined array key "messages" [zabbix.php:17 → require_once() → ZBase->run() → ZBase->initMessages() in include/classes/core/ZBase.php:530]
foreach() argument must be of type array|object, null given [zabbix.php:17 → require_once() → ZBase->run() → ZBase->initMessages() in include/classes/core/ZBase.php:530]

 二、问题处理

1、尝试先将主机关联的模板删除

尝试先将主机关联的模板删除,保存时出下以下问题弹窗:

 信息内容如下:

    pg_query(): Query failed: ERROR:  update or delete on table "items" violates foreign key constraint "c_functions_1" on table "functions"
DETAIL:  Key (itemid)=(48351) is still referenced from table "functions". [zabbix.php:17 → require_once() → ZBase->run() → ZBase->processRequest() → CController->run() → CControllerHostUpdate->doAction() → CApiWrapper->__call() → CFrontendApiWrapper->callMethod() → CApiWrapper->callMethod() → CApiWrapper->callClientMethod() → CLocalApiClient->callMethod() → CHost->update() → CHost->updateForce() → CHostGeneral->updateTemplates() → CHostGeneral::unlinkTemplatesObjects() → CDiscoveryRule::clearTemplateObjects() → CDiscoveryRule::deleteForce() → CDiscoveryRule::deleteAffectedItemPrototypes() → CItemPrototype::deleteForce() → CItemPrototype::deleteDiscoveredItems() → CItem::deleteForce() → DB::delete() → DBexecute() → pg_query() in include/db.inc.php:255]
Error in query [DELETE FROM items WHERE (itemid IN ('46182','46183','46184','46185','46186','46187','46188','46189','48350','48351','48352','48353','48354','48355','48356','48357','48358','48359','48360','48361','125078','125079','125080'))] [ERROR:  update or delete on table "items" violates foreign key constraint "c_functions_1" on table "functions"
DETAIL:  Key (itemid)=(48351) is still referenced from table "functions".]

可以看到这个错误的核心原因是:你要删除的items表中的记录('46182','46183','46184','46185','46186','46187','46188','46189','48350','48351','48352','48353','48354','48355','48356','48357','48358','48359','48360','48361','125078','125079','125080')被functions表通过外键约束c_functions_1引用了。数据库的外键约束会阻止删除 “被依赖” 的记录,以保证数据完整性。

三、解决办法

需要先删除functions表中引用了相关itemid的依赖记录,再删除items表中的目标记录。具体步骤如下:

1、查看functions表中依赖的记录

首先登录 Zabbix 数据库(PostgreSQL),执行以下 SQL 查询,找到报错itemid清单的记录:

SELECT * FROM functions WHERE itemid in ('46182','46183','46184','46185','46186','46187','46188','46189','48350','48351','48352','48353','48354','48355','48356','48357','48358','48359','48360','48361','125078','125079','125080');

执行后会返回functions表中所有关联这些itemid的记录(这些记录是导致删除失败的直接原因)。

2、 删除functions表中的依赖记录

根据上一步查询到的结果,删除这些依赖记录

zabbix=# DELETE FROM functions WHERE functionid IN (SELECT functionid FROM functions WHERE itemid in ('46182','46183','46184','46185','46186','46187','46188','46189','48350','48351','48352','48353','48354','48355','48356','48357','48358','48359','48360','48361','125078','125079','125080'));
DELETE 37
zabbix=# 
 3、再次删除主机

从界面再次删除主机,可以看到主机已正常删除。

四、注意事项

1、操作前备份

删除数据库记录有风险,建议先备份 Zabbix 数据库(尤其是itemsfunctions表),避免误删数据。

2、理解业务含义

functions表存储的是 Zabbix 中与监控项相关的 “函数”(如计算方式、触发器表达式中引用的函数等),删除这些记录会影响依赖它们的触发器、图形等,需确认这些关联内容已不再需要。

3、优先通过 Zabbix 界面操作

尽量通过 Zabbix 前端界面(而非直接数据库操作)删除监控项,界面会自动处理部分关联依赖(但复杂场景可能仍需手动处理)。

按以上步骤处理后,即可解决外键约束导致的主机删除失败问题。

http://www.dtcms.com/a/309136.html

相关文章:

  • 基于springboot的快递分拣管理系统
  • 信号发生器和示波器阻抗匹配问题
  • 重生之我在暑假学习微服务第七天《微服务之服务治理篇》
  • flutter设备图标颜色与字体颜色相同自动适配明与暗的模式
  • 力扣 hot100 Day62
  • UnityURP 使用StencilBuffer制作一个“看见看不见”的球
  • 第三方采购流程
  • 前端图片懒加载的深度指南:从理论到实战
  • 使用 whisper, 音频分割, 初步尝试,切割为小块,效果还不错 1
  • java对象的内存分配
  • linux编译基础知识-工具链
  • datagrip连接mysql数据库过程以及遇到的问题
  • Linux网络:多路转接 epoll
  • 深入讲讲异步FIFO
  • Blender 4.5 安装指南:快速配置中文版,适用于Win/mac/Linux系统
  • 汽车EDI:Vitesco EDI 项目案例
  • 基于单片机汽车少儿安全预警系统
  • 【世纪龙科技】汽车整车维护仿真教学软件-智构整车维护实训
  • Oracle EBS ERP开发 — 抛出异常EXCEPTION书写规范
  • 【世纪龙科技】3D交互深度赋能-汽车整车维护仿真教学软件
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路汽车的检测识别(C#代码,UI界面版)
  • Apache RocketMQ for AI 战略升级,开启 AI MQ 新时代
  • GXP6040K压力传感器可应用于医疗/汽车/家电
  • 在SQL SERVER 中,用SSMS 实现存储过程的每日自动调用
  • 嵌入式系统教学范式演进:云端仿真平台如何重构温湿度监测实验教学
  • Web开发-PHP应用弱类型脆弱Hash加密Bool类型Array数组函数转换比较
  • 动态规划 Dynamic programming
  • 渗透作业3
  • Kafka Streams 并行处理机制深度解析:任务(Task)与流线程(Stream Threads)的协同设计
  • kafka快速部署、集成、调优