前提:
需求要新增的字段都是可以为空的,insert 语句,insert的实体类的 get set方法都无误,打印的入参日志,debug的 insert sql语句都没有报错,但是查询数据库,新增的字段都是空的
原因分析:因为是大数据应用,同一个应用对接了多套数据源(mysql,pg,oracle,hive),一开始分析是因为改动的代码 使用了 lombok 导致的 或者是 线上的数据源和本地不一致导致的,或者 镜像包没有生效导致的,实则不然
后续通过设置 新增的字段非空约束,再次执行 新增动作,通过日志发现 报错,报错的原因是执行的 update sql中设置 新增的字段为空,违反了 非空约束。
所以
1、作为新人到一个二次开发的项目的时候,尽可能的熟悉代码的上下文关于同一个表的数据变化,排查问题的时候,也要关注 是否 同一个表在create 了之后,还发生了其它update等操作,不能只关心是否 指定的某个insert操作是否报错,看不到日志就无从下手了;
2、代码尽可能的保证复用以及代码规范 和 注释,不然后续维护的同学真的很难一下发下问题
3、没有报错日志的时候,要反证法,比如新增的字段是可以为空的,那就设置非空约束,逐步排查问题原因