SQLite:SELECT查询结果不一致

时间:2015-06-24 06:43:46

标签: sql sqlite select corruption

我面临着一些非常奇怪的,意外的行为,关于不同SELECT查询之间的一些不一致,我不知道这是否来自SQLite库,损坏的数据等。

我有一个带有下表的数据库文件,名为ResultTable10,结构如下:

  • INTEGER:Idx(PrimaryKey)
  • INTEGER:TimeStamp
  • INTEGER:Desynchronisation
  • INTEGER:循环
  • INTEGER:步骤
  • REAL:ConditionValue
  • INTEGER:LimitId
  • 文字:2KLINE1

如果我使用最暴力和残酷的SELECT查询:

SELECT * FROM ResultTable10 

然后我使用SQLite浏览器(http://sqlitebrowser.org/

滚动数据

让我们去,例如Loop = 124

Data at Loop = 124

让我们再滚动一下Loop = 125 Data at Loop = 125

根据数据提供者,给定循环值的行数总是相同的(并且给定者循环数的列Step的值也总是相同的,顺便说一下,也是相同的顺序)。 / p>

然而,我发现显然如果我只是坚持SQL SELECT查询结果,这实际上不是那个〜真的: Row Count Different

似乎两个不同循环(分别为循环124和125)的字段Step的最小值不相同(分别为Step)

此外,以下针对Step = 508的查询也会返回不一致的结果:

SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop = 125;

在这里,我可以清楚地看到我在滚动整个数据集之前所得到的内容。 SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop = 125;

SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop = 124;

但是现在关于Loop = 124的查询没有显示我之前看到的任何结果。 SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop = 124;

SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop BETWEEN 124 AND 125;

如果在WHERE子句中传递了两个循环,那似乎很好 SELECT * FROM ResultTable10 WHERE Step = 508 AND Loop BETWEEN 124 AND 125;

是否有其他人已经遇到过这种不一致,任何可能的修复,解决方法(除了重写所有数据或执行大量查询)?

这种行为可能来自哪里? (数据损坏,我的SQL语句中的拼写错误等)

编辑: 我似乎遇到了一些腐败问题,我试图用System.Data.SQLite .NET库进行更多挖掘,最后我得到了一些查询。 那 : System.Data.SQLite .NET Library

任何防止那些令人讨厌的腐败的一般指导方针? (我已经在这里检查了一个:http://www.sqlite.org/howtocorrupt.html

0 个答案:

没有答案