讲两则笑话,当update和delete少了where条件

专注,尤其是在操作正式环境的时候,不管你是要更新一个重要的数据,还是需要执行一个无关紧要的命令,都要保持100%的专注。运维不像程序员, 程序写错了,还可以删除重写, 而运维执行错了命令,就像在热闹的大街上,司机把油门当成了刹车,后果是毁灭性的。每一个运维,你所执行的每条指令,都应该是深思熟虑过结果的,所以保持专注,不要因为自己的大意而执行错了命令。

我有一个习惯,在每次执行SQL语句的时候, 我会首先写where条件,然后再调整光标到开头补全整个SQL语句。数年来一直如此,同事曾经批评我过于谨慎,但我知道,对我而言,它百利而无一害。不是我悟性有多高,而是我知道,当我执行一半命令,如果被人打断思路,无法专注时,这个习惯可以保证不犯重大错误。

讲两则笑话,当update和delete少了where条件

工作生涯中,我记忆比较清晰的因为忘记where条件的故障有两次,一次是我亲眼看到同事操作失误的,另一次是我自己操作失误的。

第一则: 当delete少了where条件

早年刚入公司时,当时还在熟悉环境,所以运维同事操作,我全程观看。 当时版本更新时,因为一个Bug原因导致需要删除一个用户的一条充值记录。因为公司小,各种流程也不规范,所以运维操作数据库是经常的事情。无论多么重要的事情,当次数多了,就变成了常规操作的,所以,执行此操作时,运维人员一边与开发聊天,一边执行。随着一阵噼里啪啦之后,我眼睁睁的看着他还没有写全where条件就按下了确认键。

真的,我当时都快惊的跳起来了,虽然我提前发现了,但是,还是赶不上他的手速。当我喊出来的时候,他才发现问题,慌张的一直按ctrl+c, 不知按了多少次,才将操作停下。

讲两则笑话,当update和delete少了where条件

面面相觑,这就是当时我们三个人的表情,本来版本更新已经完成了并且开服,现在只能赶紧通知pm停服恢复数据。

通过商量,方案定为:清空原表,直接使用备份数据导入单表

事后被一顿批评,这么低级的错误也会范,最后规定,凡是运维操作期间,无关人等不得靠近。

第二则: 当update少了where条件

这次事故是我自己的大意造成的,此次故障之后,我就养成了先写where条件的习惯了,我告诉自己,绝不能错误犯两次。

我清楚的记得当时的情况, 因为一个用户充值量比较大,所以运营准备给此用户奖励一些金币, 而这个操作因为后台没有功能,所以就只能由我直接在数据库执行sql来完成。

因为,我当时在忙其它事情,而他们又催的比较急,所以我就急急忙忙的给他们进行操作了, 一阵噼里啪啦之后,执行开始。然而突然发现没有加where条件,导致给全部用户都加了一定数额的金币。当时心里瞬间就慌了,大脑也是嗡的一声蒙了一下。万幸的是,我当时执行操作时候语句是: update table set xxx=xxx+1000; 然后慌,但是万幸还有回头路。

等sql执行之后,因为担心用户把币兑换出去,所以赶紧执行:update table set xxx=xxx-1000; 将全用户的金币再减去。然后才再次进行此用户的操作。

讲两则笑话,当update和delete少了where条件

两次故障都是因为不专注造成的,被人打扰、自己大意对于运维来说是相当致命的。就像手握核武器开关,大意就是毁灭。

愿大家以此为戒。


分享到:


相關文章: