Adresse e-mail en double dans le profil utilisateur

Dans l’un des profils utilisateur, la même adresse e-mail apparaît exactement deux fois dans la liste des adresses. La première entrée est marquée comme « principale ». La seconde est « non confirmée ».

L’utilisateur ne peut ni supprimer la deuxième adresse ni la confirmer (il existe déjà un utilisateur avec cette adresse…). Je ne peux pas non plus la supprimer (la requête DELETE renvoie une réponse 428).

J’ai essayé de rechercher dans la base de données. La table user_emails ne répertorie qu’une seule entrée. Avez-vous une idée de la manière dont cela peut se produire et comment résoudre le problème ?

Il se peut que votre index soit corrompu. Quelle version de Discourse et de PostgreSQL utilisez-vous ?

Les connexions via les réseaux sociaux sont-elles activées ? Une possibilité est que l’utilisateur ait essayé de s’inscrire avec l’adresse e-mail, n’ait pas répondu à l’e-mail de validation, puis ait utilisé la connexion via les réseaux sociaux.

Je tenterais probablement de le corriger depuis la console Rails ou peut-être directement en SQL.

Mis à part le fait qu’il soit déroutant de voir l’adresse apparaître deux fois, il n’y a pas de problème réel, n’est-ce pas ? L’utilisateur peut se connecter, mais son profil contient une adresse supplémentaire.

  • Discourse 2.7.0.beta4 (33df4233c9)
  • Postgres 13 (dpkg indique : 13.1-1.pgdg100+1)

Oui, elles le sont. Cet utilisateur n’est connecté à aucune d’entre elles, donc pour l’instant, il ne peut pas les utiliser, à ma connaissance.

J’ai essayé, mais je n’ai trouvé aucune adresse en double dans SQL. user_emails ne montre qu’une seule ligne pour cet utilisateur, et user_open_ids ainsi que user_associated_accounts ne contiennent aucune entrée. Avez-vous une idée de où chercher ?

C’est exact. Je crains que cela ne soit le symptôme d’un problème qui pourrait se manifester plus sévèrement plus tard, et qu’il serait préférable de corriger dès maintenant.