私は 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>
2 番目の文字列は似ていますが、明らかに異なることに注意してください。他のほぼすべての文字列で試すことができ、問題なく動作します。この動作の理由は何ですか? sqlite でバグを見つけましたか?
解決済み「STRING」列タイプは、何らかの理由で、sqlite では「数値親和性」を持っています。つまり、可能であれば数値として解釈されます。私が望むことを行う正しい方法は、「TEXT」列タイプを使用することです。とにかく答えてくれてありがとう!