由索引引发的奇怪的无效条件问题

原创 2006年06月01日 09:34:00

问题背景:昨天下班时,跟踪程序,突然发现一个奇怪的问题,相同的数据使用like能查到,而使用=就查询不到。比如

select * from emp where empno = 123;  查询不到数据,但是通过名字查询数据,该123数据的确存在。查询条件换成

select * from emp where empno like 123; 后,可以查询到数据,原以为是数据的问题,拷贝出来后,发现数据并没有问题,没有奇怪的字符存在。随后在这条记录上执行了多种操作,都比较奇怪,最后更新empno字段的时候,突然发现更新不上去,数据库报错,对象ID XXX 出错。这下终于找到了问题所在,赶紧查询user_object.object_id,发现这个对象是一个索引,这个索引正好包含empno字段。重建索引后,问题消失。

问题分析:因为中午突然停电,而数据库正在处理emp这个表,很可能突然断电对索引造成了影响。这个问题在需要维护索引的时候暴露出来了,而在正常查询利用到索引时,Oracle没有报错。

问题感谢:感谢俺老婆在这个问题解决过程中起到的关键作用 :)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

CodeIgniter需要注意错写查询条件导致数据库索引失效的问题

在db查询使用query($sql, 绑定参数)的时候,如果数据库字段存储的是char或者是varchar,而值刚好是一些数字串, 此是如果 where = 数字串  不加单引号也是可以查询的,而加...
  • treesky
  • treesky
  • 2012年04月12日 15:44
  • 906

vs2005奇怪的断点无效问题

最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,提示“当前不会命中断点。源代码与原始版本不同。” 重新更换过n次文件都不起作用,然后在gool...
  • Hou_Rj
  • Hou_Rj
  • 2011年11月18日 20:59
  • 533

MFC中CTreeCtrl奇怪的SetCheck [OnInitDialog中SetCheck无效问题]

一、问题的提出CTreeCtrl有个属性TVS_HASBUTTONS,如果创建控件的时候加上了这个属性,则在每个节点的左侧都有一个按钮,用来表示节点的选择状态。通过两个函数SetCheck / Get...

VS2005奇怪的断点无效问题

最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,提示“当前不会命中断点。源代码与原始版本不同。” 重新更换过n次文件都不起作用,然后在gool...

vs2005奇怪的断点无效问题

最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,提示“当前不会命中断点。源代码与原始版本不同。” 重新更换过n次文件都不起作用,然后在gool...

vs自带ajax:scriptmanager,回传引发的脚本无效问题

本来目的是想要局部刷新,然后动态添加右边“属性”到左边属性一列, 比如这样子一个界面 红框(数据从DB中获取)这一块用VS自带的AJAX控件来实现局部刷新,但是这个时候全局的jQuery脚本就...

查询条件为日期时报’无效的列类型'错误方法解决

查询条件为日期时报’无效的列类型'错误方法解决
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:由索引引发的奇怪的无效条件问题
举报原因:
原因补充:

(最多只允许输入30个字)