发表于: 2018-03-24 23:19:09

1 572


今天完成的任务

1、早上发生了一起事故。作为开发人员,我算是最后一个知道线上注册有问题,这实在是太不应该了。

刨根究底,从我这边看,有2个原因导致了这一次事故:


A、给表新增字段的时候,最好不要加非空约束。要是不想新字段为空,可以给一个默认值:

    a、错误示范:alter table user add record_status int(2) not null defauft 1;

    b、正确示范:alter table user add record_status int(2) defauft 1;


至于为什么加了非空约束会报异常,我现在是这么理解的:MySQL在进行insert操作时,首先会对所有带着非空约束的字段进行校验,如果为空,直接报某个字段为空的异常(就算设置了默认值也没用,这是因为default约束只对没有非空约束的字段生效)。


B、开发的代码和修复bug的代码没有分开。在写22期的时候,一直是一边开发,一边改bug。


第一周的时候还好,因为开发的代码比较少,对原有功能的影响几乎没有(没有动原来的其他功能代码、没有改core、没有改service),所以第一周发布线上修复bug的版本的时候,我会把22期的代码给注释掉。


到了开发的第二周,由于开发的部分变多了,而且因为需求变更,加了很多的联想功能,加上接口联调,发现有些地方设计的不合理或者是由打错字,字段和变量对应不起来,改了core和service,以及为了实现后台的分类统计,给user表新增了一个字段。


开发到这里,再让我去改bug,我是真的有点头晕了,我已经分不太清自己开发的代码和修复bug的代码了。我能保证所有修改的bug在dev环境能够通过测试,但是一发布到测试环境,有一个bug就是修复失败的(原因是我没发新的service);还有一个新的bug是测试环境官网报找不到record_status字段的异常。


所以为了让测试环境也能修复bug,我把所有的修改(22期的开发内容和修复的bug)都发到测试环境,这样一操作,测试环境的bug也修复了。


发布线上之前,我已经打算把开发内容一起发线上了。但是我也怕开发的内容会对线上的稳定有影响。所以我就对着这个sql(user表新增字段)又研究了一发,感觉非空约束加上default约束真是妥妥的,应该不会影响。我又把重要的功能,登录、写日报、该日报、加入班级、领取任务、查看日报这些功能测了一遍(唯独漏了测试注册功能),都没问题,我感觉差不多了,就签字同意发线上了。


对于今天的事故,我这里的反思有几条:

1、新增字段,在不修改原有代码的情况下,不能加非空约束。如果不希望新增字段为空,可以设置一个默认值;

2、每次发布之前,把重要的功能再测一遍(注册登录、加入新班级、领任务、写日报改日报看日报评日报...);

3、发布新版本的前6个小时,要给足关注度。做到第一时间知道有bug并马上进行确认、修复;

4、开发和修复bug要分开;

5、重要紧急的事情一定要电话通知、沟通。


遇到的问题


收获


明天的计划

1、用JDBCTemplate写折线图接口

2、参考易教练,写导出excel接口


进度

已延期至3月28号晚8点demo


返回列表 返回列表
评论

    分享到