程序员刚入行的时候是不是都删过公司的数据库?我特地问了一下身边的程序员朋友,好像都不承认。但是据我亲身经历,包括我在内,只要公司内部有内部测试数据库的,基本上都有被程序员误删的经历。

打开网易新闻 查看精彩图片

我先承认

首先说我吧,说起来不好意思,我删过公司的数据库,而且删公司数据库的时候,我已经工作好几年了。之所以把公司数据库删了,那是因为我在之前的工作中基本接触不到底层数据库,更别说写SQL语句了。

所以,时间一长,之前学的数据库知识像什么触发器、存储过程什么的,基本上也都忘得差不多了。好在增删改查语句太过简单,不至于忘掉,但是一些写Sql语句需要注意的事情,我基本上已经不敏感了。

事情经过

在新公司,接触的第一个项目就是需要操作数据库数据,在代码里面写原生Sql。其中,有一部分代码逻辑是需要对数据进行删除的,而问题就出在这里。

因为对操作数据库没有什么敬畏之心,且是在测试环境。程序员都知道,大部分情况下我们会一边写代码一边调试,所以,当我写完一部分代码以后,就运行了程序开始测试代码是否能跑,结果发现代码真能跑。

当时很开心啊,心里想的是那么久没有写SQL语句了,竟然跑起来没有问题,心里给自己竖大拇指。

但是,没有一会儿,我们老板就从办公室跑出来了,然后问我们研发总监,测试环境咋没有数据了,而且,部分功能打开还报错。

研发总监就打开了数据库,发现数据都没了!

当时我心里一慌,立马就去查代码。我们研发总监看我表情不对劲,然后就要看我代码。没办法,我就跟他一起看起了我写的代码。

最后,竟然发现我代码里有一行对数据进行删除的SQL语句竟然忘了加条件!

看到这里,我很尴尬,研发总监倒是没生气,但是表情呆滞,老板呢愣了一会儿,坐等我俩说话。

我知道此时我怎么解释也没用,此时我们二老板跑过来,了解情况后给我打了圆场,问我是不是没写过SQL,这么明显的问题都没注意。

我点点头,说以前写代码的时候都不用直接写SQL,所以就没注意。

二老板点点头,然后说:“还好这是测试环境,不然事情就大了!”。

二老板显然是跑过来圆场的,既然这么说了,研发总监和老板也没啥说的,就让研发总监把数据恢复了就行。

但经过这件事情,虽然我SQL写得依旧很差,但是在写SQL的时候,还是会反复确认写得是否有问题,然后再运行程序进行测试,之后就再也没有出现问题。

后来,我们不再使用原生SQL了,改为使用ORM,基本上杜绝了不小心删除数据库表的可能性。因为ORM是不允许不加条件就直接删除数据库的!

这就是我误删数据库的经历,准确地说是误删数据库表数据的经历。

我当然也有碰到过同事把整个数据库都删掉的情况,但是,大多数都是因为SQL语句的条件没控制好,导致清空整个表的情况。

结语

不管怎样,如果需要直接写SQL语句操作数据库的话,对于SQL语句,需要有敬畏之心,否则就会出现我这种情况。

大多数人基本上都是在刚入行的时候会出现不小心清空表数据的情况,而且写原生SQL来控制数据库的,这种情况更多!

当然了,这种事情对于程序员来说,不太光彩,所以大部分程序员即使有这样的经历,也不好意思拿出来说!