BUG Tracing

阅读更多
       今晚老大让我帮他解决一个BUG,该BUG出来得很奇怪,在MYSQL上可以,在SQLSERVER上就不行。我一听,难道又是SQLSERVER和MYSQL之间数据库的差异,怎么老是遇到这事情?

       怀着惴惴不安之心,我开始了追虫过程。建立工程之后,立马run了一下,确实是出现了那个文件。详细察看出错信息,说有 列名无效
       找到出错行,一看,HQL语法中貌似有个地方不对,明明是字符串类型的比较,居然就不加''号进行比较了,这岂不是会出错。加了''之后,继续运行,同样错误。也就是说,不是这个问题。

       把HQL对应的SQL语句拿出来对照了一下,确实是没有问题的呀。这说明人家HQL正确翻译成为了SQL。所以,我刚才的怀疑是多疑的。可是当当时并不知道。

       那我干脆手写SQL代码吧。在HIBERNATE中直接写SQL返回,居然还是出现相同问题,仍然是有列名无效。

       怒了,这个列名无效是什么意思?
       google之,一堆乱七八糟的东西,没有太多有帮助的内容。正好,连到SQL SERVER服务器上看看,找到一个数据库,打开,F1,Serarch列名无效,未果。Search 列名。出来一堆信息。看到1-500疑难状态,正好点击进去,看了一下文档,页数太多。继续search列名,找到了列名无效的说明。点击进去,人家写得很清楚,确实就是由于在from的地方没有相应的列名。
      
       这下子得到答案了。预验证之。
       一时找不到联到的sqlserver数据库的密码,那就先在另一台sqlserver数据库上测试吧。找到合适的数据库,测试,OK。看看人家的表,确实是有那些字段。
       立马请来测试组的兄弟,让他把我要连到的sqlserver数据库的密码告诉我。连上sqlserver数据库,居然在它本机查询该表都会出错,看不到任何信息……
       怒了,立马转到刚才那台sqlserver数据库机器上,将这台sqlserver数据库给加过来。这回才终于可见庐山真面目,确实是缺少相应的字段。

      这怎么可能select出那些没有的字段来呢…… 出错也就是当然的啦。

       这个问题现在想起来,太简单不过了。但是一路追踪下来,也花了将近一个小时的时间。对于MS的东西,多查查他的帮助手册还是有用处的。

       编程时间不短了,想想大学四年,研究生三年,如今工作也快一年了,写程序也大概有3, 4年了吧,DEBUG一直比较痛苦,但好歹也掌握了很多种DEBUG的手段。上午解决一个问题,也费了一个多小时,怎么最近功力不升反而降了,实在是郁闷郁闷。

你可能感兴趣的:(SQL,SQL,Server,MySQL,Hibernate,编程)