• 直接开篇点题好吧
zabbix运行一段时间后,添加报警媒介类型后,添加收件人信息后保存报错,而且修改之前用户的报警媒介类型也是一样的报错。

一、报错

  • 报错内容:

Error in query [INSERT INTO media (userid,mediatypeid,sendto,active,severity,period,mediaid) VALUES ('7','4','18888888888','0','63','1-7,00:00-24:00','183')] [Duplicate entry '183' for key 'PRIMARY']
SQL描述式执行已失败: "INSERT INTO media (userid,mediatypeid,sendto,active,severity,period,mediaid) VALUES ('7','4','18888888888','0','63','1-7,00:00-24:00','183')".

  • 报错截图:

添加后报错报错

百思不得其解,百度也度不到解决方案,又是生产环境,什么delete或是重启的那种操作更不可取,只能上数据库查看

mysql> use zabbix
select *  from media where mediaid=183;
+---------+--------+-------------+-------------+--------+----------+-----------------+
| mediaid | userid | mediatypeid | sendto      | active | severity | period          |
+---------+--------+-------------+-------------+--------+----------+-----------------+
|     183 |    178 |           5 | 13333333333 |      0 |       63 | 1-7,00:00-24:00 |
+---------+--------+-------------+-------------+--------+----------+-----------------+

二、解决

到这一步就想到了两个胆大且不成熟的解决方案:

  1. 既然是报的mediaid=183这个重了,顺着 userid找到对应用户,把他的报警媒介删了重新创建。(隐藏隐患:a.哥们不乐意,或者没权限动。b.不确定会不会又报其他的mediaid重复),果断拒绝
  2. 直接在数据库里插入数据,指定mediaid只要不和已有的重复就行。(治标不治本)
 mysql> INSERT INTO media (userid,mediatypeid,sendto,active,severity,period,mediaid) VALUES ('7','13','18888888888','0','63','1-7,00:00-24:00','288');
最后修改:2020 年 12 月 21 日 03 : 46 PM
如果觉得我的文章对你有用,请随意赞赏