1. 聚能聊>
  2. 话题详情

关于代码的那些低级错误

无伦你是初级工程师,中级工程师,高级工程师,甚至是全栈工程师、架构师,都是从零开使一步一步走出来的,想必都会犯过一些低级错误。
image

就拿我来说,曾经经我做过SQL SERVER数据库存储过程程序员。
当时我们每个人本地都有一套测试环境,所以测试的时候都是在本地测试。由于测试数据比较乱,比较多,为了更清楚的看清结果,我会经常TRUNCATE TABLE,写到这里大家可能基本猜出来了。没错!在线上出问题时,由于SQL SERVER 查询分析器可以同时开多个数据库连接窗口,我把线上数据库的窗口和线下数据库的窗口弄混了...所以,线上数据库的一张主要表,被我TRUNCATE TABLE了。。。当时刚执行完,过了1分钟我反映过来了,头脑一片空白。。。没办法,只能反映给了主管,主管听到后难得得没说我什么,马上找相关人员去处理。。。经过了大约1个小时后,原来的数据总算恢复了,但也导致了这个业务1个小时不能用。。。我都不知道我那1个小时是怎么过来的,坐在那里,动也不敢动,搞程序也搞不下去,就在网上搜如何恢复数据,话说当时我都准备好公司把我开了的准备了。
image

最后结果是,技术总监批评了我们主管,要求部门整改,线上环境严格控制,必须由他把关。
之后主管也找我谈了话,当然批评是少不了的,作为事故,还是罚了500块钱主管罚了1000。
要知道,当时我工资才3500。当时没被开除就算烧高香了吧。。。
image

事后总结起来,其实这主要还是部门管理方面的问题,我刚入职不久的人就能随便接触生产环境,并且还有很高的权限,这才是最大的隐患。当然个人也有问题,工作再忙也不要急躁,特别是你还在生产环境操作。要慎之又慎。
image

那么请回答下面的问题:
1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?
2 当时通过这次教训,你总结到了什么?
3 现在回过头来看当初那个悲伤的故事,您有什么想说的?

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    阿里云代金券 x 3

  • 奖品二

    云栖定制电脑包 x 2

  • 奖品三

    云栖帽衫 x 1

71个回答

3

黄一刀 已获得云栖帽衫 复制链接去分享

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?
有一回,客户找我说,他有笔收费录错了,要我帮他修改下金额,我一看,小问题,对方又是财务主管,于是二话不说,查询分析器打开,update 。。。set。。。where。。。,选中,一键F5,结果发现where竟然没选中,尼玛啊!赶紧按停止键,死命按鼠标,只怪数据库服务器性能太好,三秒不到就全部执行完毕了,立马吓傻,呆若木鸡,额滴亲娘。由于数据库没有每天都做备份,只能还原到两天前的。第二天,亲自上门找客户,赔礼道歉,还保证下一年免费让他们用一年。还好我是领导,不然绝对得去睡马路。
2 当时通过这次教训,你总结到了什么?
这次之后,我数据库都会每天都做备份,每次按F5键之前,都会反复看好几遍,语句有没有错,语句有没有全部选中,感觉自己现在都好像有点强迫症。
3 现在回过头来看当初那个悲伤的故事,您有什么想说的?
混饭不易,且混且珍惜,工作不易,万事需仔细。工作上不管什么事都要用心、细心,千万马虎不得,不能拿自己的饭碗开玩笑,要记住,夏天的马路蚊子多,冬天的马路冻成狗。
4、有幸中奖,想要衣服。

浮生递归 回复

每天备份只是基本措施,比较合理有效的,应当是每次重大操作或者可能会引发问题的操作之前,都再临时备份一次,以便随时还原。当然,最规范的还是实时增量备份什么的。不管是什么操作都能随时恢复到上一秒。

关羽大侠 回复

成本问题

aoteman675 回复

增量备份最头痛,有什么好的思路吗?

浮生递归 回复

看下阿里云的DBS是否符合需求

1117531302981287 回复

所以你是什么财务软件?(用友?新中大?金蝶?九鼎?)

1599629155607744 回复

联系啊优惠!

评论
6

forest10 已获得阿里云代金券 复制链接去分享

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?

我遇到最悲伤的事情莫过于直接在线上操作mongodb了。当时自己刚毕业一年,小公司。也没啥操作流程啥的来约束,公司原先是做类似印象笔记类的。当时因为人和文章的映射关系竟然做在了redis里面。但是好死不死的是服务器被某个开发重启了,更关键的是并没有做redis的持久化。后来决定直接把人员映射做到mongodb里面。。。。关键时刻到了,我把好几个人的映射都做错了,导致好多人隐私都。。。。。好吧,我承认,redis重启也是我干的ง😵ว

2 当时通过这次教训,你总结到了什么?

通过这次教训,深刻感受到了流程审批的重要性。还有就是不要轻易动线上环境。

3 现在回过头来看当初那个悲伤的故事,您有什么想说的?

原先一直认为所谓的流程就是枷锁,现在看来人多力量大,考虑的周全。

4.求阿里帽衫,谢啦😁

阿悦儿 回复

你也是够了🤣

forest10 回复

ง😵ว

评论
2

浮生递归 已获得云栖定制电脑包 复制链接去分享

入职不久就有很高的权限,我觉得这不一定跟管理不善有关系。如果一个公司技术人员偏少的时候,新人也有高权限,是没办法的事情。如果小团队也像大团队一样分工很细,很明确,管理的成本会过高,最终导致破产。

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?
有个同事,不小心把线上数据库给删了……还有个同事,没做好安全措施,导致短信被人恶意刷了几十万条,公司直接损失1万多。当然,两位同事都没受到什么处罚。
我自己有次粗心,一个判断没写完整,直接导致准考证生成的座位号不正确。一堆人拿着准考证去考场找不到自己的位置,哈哈。当然,事后客户也没有责怪我,我也觉得比较奇怪的。做错事不是应该受到相应的处罚吗?

2 当时通过这次教训,你总结到了什么?
写了十几年的代码,就这么一次事故。让我在日后的代码生涯里心细了很多,代码写完后,重要的部分,总是检查检查再检查。测试后的结果也会一再核对。

3 现在回过头来看当初那个悲伤的故事,您有什么想说的?
程序员写代码的时候,状态很重要,千万不要在累、疲劳的时候写代码。这就跟疲劳驾驶差不多,很容易造成事故。有些重要的系统,如果出现问题,是跟疲劳驾驶一样,会直接造成车毁人亡的。比如自动驾驶系统、红绿灯管控系统、航空塔台等。

1

cn_suqingnian 已获得云栖定制电脑包 复制链接去分享

就是在各大竞赛考试的时候,由于评测系统的环境问题,然后挂了好几次。
对面Llinux好多关键字然后我都用了……之后在考场上以为调的好好的结果出成绩后傻眼了……编译错误,编译错误,编译错误……然后0分。就差点滚出OI圈。

还有就是平时的时候,好几次都忘了把数据输出到文件里,最后:哎,我怎么错了啊?我这题怎么不对啊?然后别人:freopen。我:qwq……

另外写代码特别长的东西(并不专指题)的时候,一定要先想好每个函数的意思以及名字,最好有代表性的,上回因为一个built和一个build搞混调了一周……qwq

注意及时备份也很重要啊……机房的电脑配置低,动不动就蓝屏,关键是还有还原卡。本宝宝当时也是脸黑,然后第一次写数据结构的时候,记得是写到200多行突然蓝屏……因为当时戴着耳机,就听嗡的一声……然后我脑子也是嗡的一声……之后就……前功尽弃了把。

下面的这个不是本人的经历,但是是本宝宝目睹了这个事情的全过程:
学长要改自己的blog,然后……我当时还想等他写完了直接copy一个板子过来呢……然后第二天,上学长得blog……一片狼藉。学长:额……我好像写炸了,然后之前的版本没有存啊……然后就看他又花了两天从新写了一个。从此以后我的blog的数据也是改完一个就备份,上回有个东西写挂把我blog毁了还好及时手动回滚……qwq

其实还有很多吧

刚开始接触的时候(甚至现在也是),特别特别的天真,什么萌没有买过啊qwq

然后现在就是遇到一个问题就涨一回记性,以后也都不会再犯了

cn_suqingnian 回复

想要电脑包~(顺便卖个萌)qwq~

评论
0

微wx笑 已获得阿里云代金券 复制链接去分享

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?
没犯过错误的程序员不是好程序员。
数据库方面通常是执行更新、删除语句时出现悲伤的事情,不过我还没操作过什么比较重量级的数据库。

记得一次产品更新上线时,没有对之前的版本做备份,结果新版本更新上去才发现有严重Bug,导致主要功能不可用。
还有一次是帮妹子修电脑,本想趁机表现一下,结果问题没解决,还导致其它很多功能不可用了,后来只能对关键数据做备份,重新安装系统了,还好没有丢失关键数据。

2 当时通过这次教训,你总结到了什么?
其实在执行一些操作的时候,有很多操作的结果可能是不确定的,这就要求我们在执行重要操作之前一定要做好备份工作。

3 现在回过头来看当初那个悲伤的故事,您有什么想说的?
总是需要犯过错误,才会意识到问题的严重性,和自己的不足。

0

雷侠 已获得阿里云代金券 复制链接去分享

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?
写好的程序没备份,是的,之前不会用控制版本。结果有一天,不小心把硬盘搞坏了,你知道那种感觉吗?
就像从几千米高的悬崖低落下来的感觉,心都凉了。
从此之后,开始学习git的使用方法,每次写完一次代码或者要出去的时候都先提交到远程仓库。

说白了,还是因为技术菜,会的技术太少了。流下了没有技术的眼泪...

2 当时通过这次教训,你总结到了什么?
备份啊,做事之前先做好备份啊。不然硬盘坏了,你能找谁去?

3 现在回过头来看当初那个悲伤的故事,您有什么想说的?
如果,我能早一点会git,那么我也就不需要重新写一次代码了。

2

yolo_omg 复制链接去分享

在写RPC框架的时候,写了很多bug,在这里分享一个比较严重的:客户端连接断开清除请求数据时抛了ConcurrentModificationException,导致连接关闭异常,恰巧又碰到集团要做断网演练,接着就是1个星期内推动全网升级,拉了很多丁丁群,发了很多红包,还好没有触发线上故障。导致后面写if else都要double check了,比如1+1是否等于2,都要写UT进行验证了,然后拉着小伙伴review代码。

发现问题的时候,一定不能隐瞒或者想甩锅,以解决问题为前提,之后再去review!切记!

1

康康康 复制链接去分享

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?
本来想说update了整张表 发现@黄一刀已经说了,那我来个更低级的。。。刚写GO时候图方便强转int用string(int), 结果go不按什么码给我转了,主要是拼接redis的key,结果redis就找不到了,当时也是血气方钢。直接就上线了,快下班运营来反馈,找了好久还好没有什么损失,不过群发邮件呗点名展示了一下 真是丢人

2 当时通过这次教训,你总结到了什么?
不管多小的改动一定要找人review代码, 跟测试人员通报一下才上线 急不得,这么低级的错误,丢不起这个人啊主要

3 现在回过头来看当初那个悲伤的故事,您有什么想说的?
大多数线上的错误都是上线不规范 如果能规范上线流程,每次上线有人帮忙code review就会大大减少出现问题的概率,以防出现改了这样的bug又出了新的bug, 相比于效率还是质量更重要

4、有幸中奖,想要衣服+1

1

1426322296122560 复制链接去分享

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?

  一直在搞java,就现在的这家公司,刚来的时候对项目不够熟悉,又赶上项目升级,工作量大,同时开发两个项目,偏偏两个项目的代码还挺类似,结果加班加到昏天暗地的时候就把A项目中的东西写到了B里,没测试就直接提交了部署测试环境,重点是测试人员居然没测出来!!!!当项目上线开总结会议的时候产品说的时候发现的,当时脑子就懵逼了,赶紧跟经理说,当天紧急上线,修复,最后居然没怎么处理我,就让我跟测试一人请全组人员一次下午茶

2 当时通过这次教训,你总结到了什么?
写完代码一定要自测啊!! 写完代码一定要自测啊!! 写完代码一定要自测啊!!重要的事情说三遍!
3 现在回过头来看当初那个悲伤的故事,您有什么想说的?
如果我跟测试不是加班加混头了,就不会测试不出来,哎

0

yangxu 复制链接去分享

最悲惨的莫过于将判断中的==写成了= 每次都要找好久才能找到
niuwenyong 回复

带了个徒弟 经常干这种事 每次找我看代码 第一反应就是找if里面的==

评论
1

xenny 复制链接去分享

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?
现在还算不上程序员,还在读大学,倒是在搞ACM。写代码遇到悲伤的故事就是上学期小学期做个小项目,写个通讯录,然后因为是工程文件,创了很多个项目文件,最开始调试的时候判断用户是否登录怎么都是错误,但是看代码没有任何错误,后来才发现变量前面没有加extern,没有把另一个文件的变量数据引用过来。所以就一直错一直错,最后还是一行一行的观看才发现的。
2 当时通过这次教训,你总结到了什么?
还是经验不足啊,就算代码错了,也不知道先检查什么再检查什么,现在遇到错误的话,先看环境,再看变量和函数,再看具体算法。
3 现在回过头来看当初那个悲伤的故事,您有什么想说的?
其实相比各位有些的rm -rf /来说这算不上什么,顶多是多耗费了点时间和精力,但还是学到了很多,不过我想,每个程序员应该也都犯过一些低级错误吧,毕竟我们是人,不是机器,嘻嘻。

1

oranzh 复制链接去分享

我写接口文档的时候,update没有加限定条件,差不多1000个接口的参数瞬间一样了

0

wzp 复制链接去分享

就前几天的事情,由于项目比较紧,回家之后想着赶一下,代码写完后简单测试就放在生产环境。然后在执行一个修改的时候本来应该习惯一条记录,结果判断写错了修改了全表的记录,用的是阿里云的rds mysql一秒钟完成,可能是因为配置高,我查看的时候都懵了!连忙联系主管,主管当时气的不行,转身直接联系了阿里云,没想到rds尽然可以按分钟恢复,立即暂时关闭项目提示升级。然后就和主管半夜去公司加班,改掉了问题代码,花了两个小时恢复了数据。阿里云rds真的好用,不过这次以后真的怕了,更加小心了,每次线上功能都要看几遍。

oranzh 回复

哈哈,兄弟你是搞ohp的吧

评论
1

zymcoder 复制链接去分享

非常搞笑加惨痛的教训,原来做过一个项目,有一个地方就是一个列表查询。客户查询自己的信息,如果没有就添加上,如果有就校验是否正确。 这是需求,那时候我刚入职没多久,没错,这个查询我写的,刚学会sql后面一堆if的那种判断。结果一个西藏的用户我记得很清楚,他浏览器版本太低了,用户信息没传过来,我后台sql没做强关联,就把所有的信息都给查出来了,用户看到了一大堆不认识的信息,又校验不过去,咋办?估计是个领导,找了个下属专门点后面的删除按钮,一条一条的删。。。删了整整两天,八千条啊啊,后来根据操作日志找到了这个人,打电话过去的。。。我直接懵逼了。。好在花了一个通宵我老大把数据恢复了。。我在那公司有了个外号,八千条。。。
1

kentzhang 复制链接去分享

说DB呀?也不是什么大问题,但这事影响大。一样是把测试环境和生产环境弄混了,begin tran 执行完,忘了后续处理,就去查数据了,然后生产环境DB的一些交易表被我锁了大半个小时,相应的用户部门停了大半个小时,几十人在聊淘宝有什么抢购,约今晚去哪吃饭(没错,那个部门大多都是女人)。直到DBA气冲冲拿着菜刀扑向我。因为受影响的是一线部门,上班时间系统使用率极高,按公司规定,问题逐级上报,最后捅到兼管IT的董事那里了。

0

隔壁公子 复制链接去分享

以前刚开始到一个小互联网公司敲代码的时候,就遇到晚上团队需求上线发布,由于测试时间比较紧,很多自己测试过,测试妹子功能测试没啥问题就通过了,上线到十点多的时候我们自测功能突然发现了一个数据的bug,然后就直接改了上线,那会主管让我改下测试,由于那会我还是个小菜鸟,系统里的有个变量居然被我在改的时候发现局部变量下边的参数没法直接使用,就想为啥不做全局变量,结果就放在方法外做全局变量了,后来用了几条数据测试居然都通过,没啥问题,然后就直接上线了。两天后做线上系统运维的通过说有好几个客户反映他的审批数据用着用着就变了,问题后来团队同事一起查了很久找到了,由于经验不足导致两天内的审批数据都发生了异常,接下来的两天都在对上线后的数据,周末还在加班核对,突然觉得当时的同事真是太好了,感谢当初的宽容。

0

超女10强 复制链接去分享

98年我编的第一个程序是进销存,是FOXBASE编写的。在99年用的用友DOS版的进销存软件,那时没有UPS,经常断电,就进不去了。我就进后台,把create data1 删掉就行了。哈哈,对于我老码农。现在做市场了。

0

tomsean 复制链接去分享

1 各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢?
上次更新程序,编译好.class拿去线上覆盖,重启后发现。。。全部报500了 然后找备份 发现!!啊 没备份。。

2 当时通过这次教训,你总结到了什么?
不管操作什么,一定要先备份

3 现在回过头来看当初那个悲伤的故事,您有什么想说的?
你为什么辣么傻?

0

smile-1 复制链接去分享

作为一名资深Java开发工作者,对于"这个避免低级错误"的话题,经过深思熟虑,总结出一句话:No write,no error !

0

麟夏 复制链接去分享

初涉,完全不懂,bj/cqbjb/xg

4
21078
浏览
0
收藏
邀请他人互动
云数据库SQL Server,具有企业许可授权,权限更为开放,引擎功能更为强大。能完美支持Windows平台的....

移动测试(Mobile Testing)是为广大企业客户和移动开发者提供真机测试服务的云平台,拥有大量热门机型,...

业内领先的面向企业的一站式研发提效平台(研发效能),通过项目流程管理和专项自动化提效工具,能够很好地支持互联网敏...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
阿里云总监课第五期重磅上线!

阿里云总监课第五期重磅上线!