• 0
  • 0
分享
  • 从一条sql报错解决过程学习程序员查bug的思路——软件测试圈
  • 北极 2022-08-29 13:54:22 字数 1125 阅读 2017 收藏 0

从oracle迁移数据到达梦后,发现数据库默认值都丢失了。于是我想从oracle数据库将默认值查出来,在达梦数据库加回去。

于是上网查了一下,看怎么获取oracle数据库字段默认值信息,找到了这个sql。

select t.column, t.data_type, t.data_length, t.nullable, t.data_default from USER_TAB_COLS t where TABLE_NAME = 'AA'

但把sql拿到数据库跑时却发现有问题,报了一个错:

1.png

粗略扫了一下报错信息,没看懂错在哪里。这跟我们平时碰上程序bug,但日志不清晰,看问题在哪是一样的。
看了一下sql,主要有三部分,select,from语句(user_tab_cols是一个视图),还有where条件,错误可能是select部分,
或者user_tab_cols视图语句或者是where条件语句造成的,但不知道是哪一部分出错。

于是我先尝试把where条件去掉,看还会不会报错。

2.png

结果还是一样的错,那说明错误位置应该不在where条件里面,那继续尝试缩小范围。

这次我一步到位,把sql简化成只有一个元素:表名

3.png

发现可以查询成功,那应该在select语句里面。 看查询有多个字段,暂时不知道是哪个字段有问题,尝试删除后面一半。

4.png

这时发现问题还在,那应该是前面两个字段有问题。继续删除一个字段再试。

5.png

这时还是报错,但错误范围已经很小了。熟悉oracle的人一看就应该能知道column是关键字,这里应该是字段名写错了。(后来发现正确字段名应该是column_name)

如果这时还想不起来错误原因怎么办?——继续删减。看我下面的操作,删除别名t

6.png

删除到这里,发现还是报错,但错误提示不一样了。这时再上网查一下,关于oracle的column信息,会在百度发现很多相关内容。这时有一定编程经验的人应该肯定能回忆起来。

7.png

发现问题后,修改好,现在可以正常查出默认值了。

8.png

这里展示了一种程序员查bug的思路,就是不断减少可能导致报错的内容,直到错误不复现(或者错误发生变化),问题足够简单,可以一眼了然知道原因。

通过减少变量,逐步增加确定性,这是一种程序员查bug的思路。还有一种思路是倒过来,从一个最简的系统,逐步增加变量,最近确定问题,以后有机会再分享案例。

留一个小思考题:如果第一步删除了where条件后,发现sql不报错了。应该怎么查?

如果发现只有where条件跟select字段同时保留才报错,单独修改字段或者删除where条件不报错,又该怎么查?


作者:皇家救星

文章链接:https://www.cnblogs.com/kingstarer/p/14897896.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 创建SpringBoot项目配置pom<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0...
            7 6 2454
            分享
          • polita3.0的框架接口如何编写测试用例如何运行测试用例在利用caster平台进行接口管理以后,我们可以将所有的中心放在编写测试用例case。这个教程可以帮助大家快速上手添加测试用例。1、polita3.0的框架接口```python ├── bin                   这里定义了怎么生成open-api ├── ci    &...
            0 0 2158
            分享
          •   华为nova11系列及全场景新品发布会正式举办,nova11系列、畅享60X、MateBook系列等新品相继亮相。这其中,有一个“大家伙”非常值得关注,华为智慧屏S3Pro相较于上一代实现了全面升级,搭载智慧双芯实现了音画体验和智慧体验的大幅提升。同时,也带来了业界最强的超级投屏功能,全面革新投屏体验。  华为智慧屏S3Pro搭载了一颗4K旗舰主芯和一颗AI视觉芯片,智慧双芯的性能组合成为了行业新的解决方案。这颗4K旗舰主芯拥有四核A73CPU,主频可达1.5GHz,在应用启动速度、操作流畅性等方面起到了关键作用。同时,这颗芯片还配备了一块1.6TOPS的NPU单元,带来了鸿鹄AIHDR增...
            0 0 760
            分享
          •   在职场的丛林法则中,流传着一句看似颇有道理的话:“多做多错,少做少错,不做不错。”乍一听,这种观念似乎给人传递了一种消极避事的处世之道,而它常常出自那些看似资深、深谙职场套路的“老江湖”之口。但如果我们深入探究,你会发现,这句话的实质以及它对个人长远发展的影响并不那么简单。  让我们从小灰的例子出发,她是一位能干高效的测试工程师,因为能力强、效率高,领导自然给她分配了更多的工作。然而,由于工作量过大,一次疏忽导致了生产问题,结果遭到了领导的严厉批评和绩效评定不合格。这让小灰和其他一些职场老手得出结论:多干多错,少干少错,不干没错。  但从长远角度来看,这种“明哲保身”的潜规则实则是荒诞不经...
            0 0 363
            分享
      • 51testing软件测试圈微信