これ、普通は発生しないんですが、Mastodonのデータベースから不用意にインデックスを削除したとか、何かそういう理由で、重複レコードが出来てしまうことがあります。
今回、Mastodon v3.2.0へのマイグレーションで、accountsテーブルのusernameとdomainを小文字に変換してユニーク制約のついたインデックスを張り直すっていうのがあるんですが、そこでいくつかの管理者がエラーになったようで、issueがあがっています。
https://github.com/tootsuite/mastodon/issues/14443
トラブルシューティングなので、マイグレーション書き換えたり、SQL飛ばしたり、rails console使ったり、色々やってます。状況としてはマジヤベーんですが、結構面白いですw
教訓としては、ユニークインデックス張る前に、チェックぐらいは入れた方がよさそう、というところです……。
Mastodonのサーバを管理されている方へ
PgHero(管理から入れるPostgreSQLのダッシュボード)で、Duplicate Indexesを指摘されたり、Space(テーブルやインデックスの使用容量の一覧)でインデックスにUNUSEDがついていたりすると思いますが、
_人人人人人人人人人_
> インデックスを <
> 削除しないで! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
インデックスを含めたデータベースのスキーマは、Mastodon本体のソースコードの中で、RailsのActive Recordの仕組みを使って変更を管理しています。その管理されている状態と一致しなくなると、いずれかの時点でdb:migrateできなくなって詰みます。
また、インデックスは、データベースの検索を高速にするだけでなく、同じキーを持つデータが重複しないようにする役割もあります。
滅多に使われないインデックスでも、それが無くなるとデータベースの整合性が壊れます。
データベース構造の変更は、本家のGithubにissueをあげたり、pull-requestを経て行いましょう。
いま問題が起きている人の全員が、手動でインデックスを削除しちゃったことが原因だったらいいんですが、
_人人人人人人人人人人人_
> なにもしてないのに <
> 壊れた <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
だとヤバイですよね……。