最近项目上因为某些原因,视图突然间报错了,之前是一点问题也没有,突然之间就报了异常,查询就报错,完全查不出数据。
对于资深开发来说,这种之前是好的,突然间就用不了的情况下,要是来排查情况,也是相当懵的,原因就是突然不行了,搞得都不知道从哪里下手进行排查。
原因就是时间格式的转换问题,报了错误 ora-01840 输入值对于日期格式不够长。
报了错误,第一时间就感觉是日期格式的问题,网上的解释也是这样的,就是某个字段的日期有问题,其实已经坐实了就是这样一个问题。
那我们这里先来解释一下,以上错误的问题,那就是日期在转换时候产生的错误,这里只是个官方的解释,那具体情况,我们还是要根据,我们项目的问题来解决。
当大家都知道是转换出现在的问题的时候,我却认真排查了很久,才最后定位到问题。
这也是为什么不同项目,问题不同,虽说知道是哪里问题,但解决问题的思维跟想法是一样的。
首先,在确定任何其他情况下是完全没问题的情况下,就锁定某个字段的问题,只要定位到某个字段的情况下,只要分析该字段的数据是否有问题。
如下图,我们模拟出这种情况如下:
但其实,我们这里只是模拟出这种情况,那具体问题,可能是你表里边或是视图里边某个字段有问题,导致的转换失败。
如何排查出来,才是重点,因为项目上发生问题的是视图,所以我们要看视图,为什么排查了好久,没有发现问题?
那是因为视图查出来的数据,基本上都是正常的,我这边仔细分析了一下,查看了整个字段的所有数据,发现根本就没有问题。
最后,定位到,原来是一些被过滤的数据有问题,因为视图查询,最后呈现的出来的数据,都是有条件过滤的,呈现在我们面前的都是对的。
我们此时的注意力,就要集中在视图过滤之前,我们没看到的数据,最后真的定位到,某几条数据时间字段为空,导致了异常。
知道问题后,就从根本上解决问题,解决空的问题,那这个问题就解决了。
这里要注意,视图里边的 where 条件,去掉where 条件,看全数据才是排查问题的关键。
以上是自己的做为资深开发的一些个人经历,把这些经验分享给大家,希望以后大家在从事开发中,可以避免不必要的麻烦,跟浪费时间精力。
要是大家喜欢我的文章的话,可以在文章下留言或是联系我,共同进步,共同探讨开发的一些案例,促进彼此间的交流,分享一些日常的开发趣事。
共有 0 条评论