注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

杨伟的博客

程序人生

 
 
 

日志

 
 

Access 关于 5002 的 bug  

2008-04-14 08:38:00|  分类: IT界 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

相关数据库:

<点击下载>(39k)

BUG 介绍:

相关下载中的数据库文件 access_bug.mdb 中只有一个表和一个查询。

表 table1 的结构如下:

ID: Text(6), 主键
A1: Number(Integer)
A2: Number(Integer)
table1 中共有 5002 条记录,ID 为 021001~026002 的字符串,A1、A2 为随机数字。

查询 Query1 内容如下:

SELECT COUNT(*) FROM table1 WHERE ID LIKE '02????'

BUG:

按 SQL 语句的意思,应该返回 5002,可实际返回结果为 0。

下面继续做一些尝试:1. 修改 LIKE 范围:

1.1 修改查询为 ...LIKE '022???'
执行查询,成功返回 1000。

1.2 回复查询为 ...LIKE '02????'
执行查询,返回 0。

'022???'有数据,'02????'却没有数据,说不通。

2. 修改记录数量:

2.1 在 table1 表中增加一条记录,比如 ID 为 026003,A1、A2 随便写。
执行查询,成功返回 5003。

2.2 随便删掉一条记录。
执行查询,又返回 0。

2.3 再随便删掉一条记录。
执行查询,成功返回 5001。

2.4 再随便添加一条记录。
执行查询,又返回 0。

看来,只要记录条数是 5002,就返回 0,其它情况都能正确返回记录数量。

3. 修改主键:

3.1 修改表 table1,取消 ID 的主键。
执行查询,成功返回 5002。

3.2 修改表 table1,重新为 ID 加上主键。
执行查询,又返回 0。

主键应该只影响查询速度,不会改变查询结果。但在这个例子中,主键却影响了查询的结果。

4. 针对数据库的修复:

4.1 执行 access 中的压缩和修复数据库,问题依旧。

4.2 将数据通过 SELECT INTO 复制到新表,并给新表的 ID 加上主键,问题依旧。

4.3 修改数据库格式为 access 2003,问题依旧。

看来应该不是数据库文件本身的错误所致。我想,这的确是个 bug 吧。

  评论这张
 
阅读(3)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017