Mise à niveau vers la version actuelle de Discourse aujourd’hui, la reconstruction échoue et je ne suis pas tout à fait sûr de la cause. L’installation était plusieurs itérations en retard (je pense 2.8x). La mise à jour de l’image Docker s’est bien déroulée lorsque j’ai voulu mettre à niveau Discourse, on m’a demandé de faire un pull manuel et une reconstruction (la plupart du temps, on me le demande), cependant la reconstruction a été infructueuse.
Voici les résultats d’une recherche de « error » à l’aide de discourse-doctor. Désolé pour les captures d’écran, le client VNC basé sur le Web que j’ai ne semble pas prendre en charge le copier-coller.
Je suis bloqué sur la façon de lancer la réindexation. J’ai réussi à démarrer (bien que ce ne soit pas accessible via le web) et à entrer dans l’application, mais sans succès pour aller plus loin.
Je suppose que sudo ne fonctionnerait pas, mais su a fonctionné et maintenant j’explore postgres.
Je dois maintenant trouver comment corriger les doublons. La requête semble être…
UPDATE users SET username_lower = 'xxx' WHERE id = xxx;
J’ai essayé quelques variations sans succès. Comme vous pouvez le constater, je ne suis pas sûr à 100 % de la syntaxe correcte ici car l’erreur est liée à une colonne.
Je retournerais également les ID des utilisateurs (qui sont uniques) pour les identifier correctement, puis je renommerais l’un de ces deux utilisateurs
Pour développer ce que @Canapin a dit, au cas où vous ne l’auriez pas encore compris, il devrait être simple de rendre les noms d’utilisateur uniques puisque vous avez déjà établi que racerx est le seul nom d’utilisateur dupliqué.
Tout d’abord, si ce n’est pas déjà fait, assurez-vous que racerx2 n’existe pas déjà afin de ne pas simplement déplacer le problème vers un autre nom d’utilisateur : (Si vous obtenez un id, essayez un autre nom d’utilisateur.)
SELECT id FROM users WHERE username_lower = 'racerx2';
Une fois que vous avez un nom d’utilisateur inutilisé, obtenez les ID des comptes racerx dupliqués :
SELECT id from users WHERE username_lower = 'racerx';
Choisissez-en un, peu importe lequel, bien que je recommanderais le plus élevé, puis changez son nom d’utilisateur : (En remplaçant racerx2 par un autre nom d’utilisateur si nécessaire et 12345 par l’ID racerx que vous avez choisi.)
UPDATE users SET username_lower = 'racerx2' WHERE id = 12345;
Mise à jour (Était dans les brouillons depuis quelques jours, désolé) Il semble que j’aie trouvé la solution. Je ne suis pas sûr si ce que j’ai fait était la bonne approche, mais la reconstruction a réussi.
J’ai trouvé difficile de modifier/ajouter la valeur racerx dans la colonne username_lower en utilisant la syntaxe, alors j’ai procédé autrement. en recherchant les ID des lignes et en modifiant la valeur username_lower dans une ligne spécifique.
D’abord, j’ai essayé d’obtenir un rapport de toutes les lignes de la table users qui avaient “racerx” dans la colonne username_lower.
select all from users where username_lower ='racerx';
À partir de là, j’ai décidé de modifier racerx en racerx2, je ne me souviens pas exactement de ce que j’ai tapé pour y parvenir. Je pense que c’était UPDATE SET from users username_lower racerx to racerx2