有没有可能只有一个位切换,所以我的文件显示我一个字母“Q”,而不是一个“S”

在我们的应用程序中,我们使用Hibernate和PostgreSQL来存储数据。 在我们的数据库表中,我们有一个鉴别器列,例如“TIPPSPIEL”。 这是一个固定的string,不能被任何用户操纵。

突然之间,我们在这个巨大的桌子上有一个条目,我们有“TIPPQPIEL”而不是“TIPPSPIEL”。 我们不知道这是怎么发生的。

是否可以通过我们的硬盘切换一个位,所以我们的字母“S”不再被编码为“1010001”,而是突然变成硬盘上的“Q”,一个位如下切换:1010011?

我不是硬盘上的一些专家,但是我猜测操作系统或磁盘有校验和和其他东西,以确保这不会发生。

有没有可能只有一个位切换,所以我的文件显示我一个字母“Q”,而不是一个“S”?

更新:我们做了进一步的分析。 我们的从数据库从主(PostgreSQLfunction)获取它的WALlogging。 无论如何:我们的从服务器应该同步。 但奴隶在这一行中并不同步。 我们可以看到它几天前没有任何用户在这个特定的条目上的交互。 所以它必须有点翻转。 害怕!

这是非常罕见的,我们在这个网站上看到一个真正有趣的问题,所以首先谢谢你。

我认为你所看到的确是一个单一的错误,你可以发现它是诚实的,但是你认为第二个最不重要的位已经被切换是正确的(假设你正在使用ASCII无论如何)。

至于校验和等,当它被写入磁盘时,它可能会被validation为罚款 – 我很确定这个问题后来通过一个简单的漏磁错误发展。 但是你说得对,编码检查已经完成了,它跟制造商有所不同,但是有可能是某个地方出现了这样的错误:“这看起来有点奇怪”,但是你的IO链有什么select呢? 否认整个街区? 我将假设这是一个非RAID磁盘,因为RAID磁盘在检测到错误时倾向于提供更多的选项。

这是一个奇怪的事情,虽然这种事情可能在世界各地发生多次。