関数に基づいて、postgresql 9.0 db に一意のインデックスがあります。私が試した手動テストではまだ失敗していませんが、クエリを実行するとデータベースに重複が見られます。
これをチェックしてください:
Index: "users_screen_name_idx" UNIQUE, btree (lower(screen_name::text))
# select lower(screen_name), count(1) from users group by lower(screen_name) having count(1) > 1;
lower | count
---------------+-------
xxx xxx 3735 | 2
xxx xxx 37383 | 2
... (36 more) ...
| 17254
(39 rows)
これがどのように起こっているかについてのアイデアはありますか?NULL が一意ではないことはわかっています。それは問題ではなく、他の 38 行です。