Дубликат адреса электронной почты в профиле пользователя

В одном из профилей пользователей в списке адресов электронной почты дважды указан один и тот же адрес. Первая запись помечена как «основная», а вторая — как «неподтверждённая».

Пользователь не может ни удалить второй адрес, ни подтвердить его (так как пользователь с таким адресом уже существует…). Я тоже не могу его удалить (запрос DELETE возвращает ответ 428).

Я попытался поискать в базе данных. Таблица user_emails содержит только одну запись. Есть ли у кого-то идеи, как это могло произойти и как решить проблему?

Возможно, у вас повреждён индекс. Какую версию Discourse и PostgreSQL вы используете?

Включены ли у вас социальные логины? Один из возможных сценариев: пользователь попытался зарегистрироваться с указанным адресом электронной почты, не подтвердил его, а затем использовал социальный вход.

Я бы, вероятно, попытался исправить это через консоль Rails или, возможно, напрямую через SQL.

Помимо того, что адрес отображается дважды, что сбивает с толку, на самом деле проблемы нет, верно? Пользователь может войти в систему, но в его профиле указан дополнительный адрес.

  • Discourse 2.7.0.beta4 (33df4233c9)
  • Postgres 13 (dpkg показывает: 13.1-1.pgdg100+1)

Да, включены. Этот пользователь не привязан ни к одному из них, поэтому, насколько я понимаю, пока не может использовать их.

Я пробовал, но не смог найти дубликат адреса в SQL. В таблице user_emails для этого пользователя только одна строка, а в user_open_ids и user_associated_accounts записей нет. Есть ли какие-то подсказки, где искать?

Верно. Я беспокоюсь, что это может быть симптомом проблемы, которая позже проявится более серьёзно, и её можно было бы исправить заранее.