我正在尝试将 md5 校验和存储在 sqlite 表中,并且它几乎一直运行良好(对于数万个文件)。但是对于一个特定的文件,事情变得很奇怪。在我看来,下面示例中的校验和似乎有一些混淆 sqlite 的“神奇”特性。
SQLite version 3.6.22
Enter ".help" for instructions
sqlite> CREATE TABLE files (md5 STRING UNIQUE NOT NULL);
sqlite> INSERT INTO files (md5) values ("8534112824210843669373e916873875");
sqlite> INSERT INTO files (md5) values ("9534112824210843669373e916873875");
SQL error: column md5 is not unique
sqlite> SELECT * FROM files;
Inf
sqlite>
请注意,第二个字符串相似,但明显不同。您可以尝试使用几乎任何其他字符串,它工作正常。这种行为的原因是什么?我在 sqlite 中发现了一个错误吗?
已解决无论出于何种原因,“STRING”列类型在 sqlite 中具有“数字亲和性”,这意味着如果可能,它将被解释为数字。做我想做的事情的正确方法是使用“TEXT”列类型。无论如何,感谢您的回答!