我有一个超过13.000行的表格。
CREATE TABLE "DBA"."mytable" (
"c1" numeric(8,0) NOT NULL,
"c2" numeric(2,0) NOT NULL,
"c3" numeric(4,0) NOT NULL,
"c4" numeric(8,0) NOT NULL,
PRIMARY KEY ("c1","c2","c3","c4")
)当至少有两行恰好满足条件时,以下查询不返回任何行:
select * from mytable A where A.c1=229 and A.c3=1更奇怪的是,稍微修改(但相同)版本的查询会像预期的那样返回2行:
select * from mytable A where A.c1=229 and A.c3+1=2在怀疑数据库中有一些物理损坏后,我创建了一个新的数据库,用上面的代码创建了表,并从卸载文件中加载值。结果是一样的。
我知道PK中的所有四列都不是很好的设计,但这不应该成为db返回错误结果的借口。通过调整列的创建顺序并删除PK,问题就会消失并重新出现。
没有人知道这个问题的解决方法或解决方法吗?该数据库位于Windows 8 64位系统上,区域设置为土耳其语。
谢谢
发布于 2018-04-20 03:59:02
我记得很久以前我使用Sybase的时候,有时表的数据会被悄悄地损坏。
我们找到的唯一解决方案是重新创建表并再次插入数据。我很抱歉,但这是我们找到的唯一解决方案。因此,您可以将数据复制到另一个表,然后删除并重新创建表,最后将数据复制回来。
https://stackoverflow.com/questions/49918662
复制相似问题