[Site en panne :(] Échec de la mise à niveau\reconstruction - Problème de migration de base de données ?

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.

image

Il semble qu’il pense que vous avez deux utilisateurs nommés racerx. Je pense qu’il y a un sujet sur un problème similaire ici :

Aussi un plus récent ici aussi :

4 « J'aime »

Merci, je vais commencer dans cette voie… Souhaitez-moi bonne chance…

1 « J'aime »

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.

image

2 « J'aime »

Vous devez exécuter ces commandes à l’intérieur du conteneur. Quelque chose comme

./launcher start app
./launcher enter app

Avant de faire sudo postgres

Modification : oh, vous êtes entré dans le conteneur.

Ce postgres -c a besoin de sudo avant.

4 « J'aime »

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 vais continuer à chercher. Je ne sais pas encore combien de doublons j’ai…

/edit… c’est juste racerx. DAMN RACERX !

image

2 « J'aime »

Avez-vous trouvé comment le réparer ?

Je retournerais également les ID des utilisateurs (qui sont uniques) pour les identifier correctement, puis je renommerais l’un de ces deux utilisateurs :slight_smile:

4 « J'aime »

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;
3 « J'aime »

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

2 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.