Erreur Index_users_on_username_lower lors de la restauration de la base de données : échec de l'import

Salut !

Hier soir, j’ai rencontré un gros problème sur un forum et j’ai dû tout recréer. Mais lors de la restauration, une erreur est survenue et l’opération a échoué. Voici le message d’erreur :

ERROR:  could not create unique index "index_users_on_username_lower"
DETAIL:  Key (username_lower)=(lea) is duplicated.
EXCEPTION: psql failed: DETAIL:  Key (username_lower)=(lea) is duplicated.

Je pense que cela peut être lié à la connexion via Twitter, mais est-ce que la restauration peut modifier un nom username_lower s’il est en double ? Je ne pense pas pouvoir le modifier dans le fichier SQL (il est assez volumineux) et le réimporter.

1 « J'aime »

Un autre cas de corruption d’index de base de données, comme mentionné précédemment ici : Critical Error: changed username, user got broken

Je ne sais pas quel type de problème vous a poussé à restaurer la sauvegarde, mais cela pourrait être lié.

3 « J'aime »

C’était un problème différent : le serveur n’a pas pu accéder à pups.git, avec l’erreur « Could not resolve host: github.com ». J’ai essayé certaines solutions trouvées hier soir, mais cela n’a pas fonctionné.

Avec la restauration, je pense qu’il ne s’agit que d’un problème lié à un seul nom d’utilisateur (peut-être lié à la création de compte en un clic via Twitter ou quelque chose de similaire). J’essaie de le corriger manuellement, mais gérer un fichier SQL de 1 Go n’est pas idéal.

1 « J'aime »

Édition : avec le logiciel vim, j’ai pu modifier le fichier SQL et trouver les bonnes lignes. La restauration a fonctionné. Je dois simplement tout re-cuire, et tout devrait être prêt.

Il y avait un nom d’utilisateur « Lea » et un nom d’utilisateur « lea ». C’est étrange que Discourse ait permis cela. C’est un forum assez ancien (juin 2014), et je l’ai mis à jour fréquemment, donc cela était peut-être dû à une version spécifique.

3 « J'aime »

La journée a été folle, mais je vais essayer d’expliquer comment j’ai tout réparé au cas où vous auriez vraiment beaucoup de malchance comme moi :upside_down_face:

  1. Téléchargez la sauvegarde. Extrayez-la plusieurs fois jusqu’à ce que vous ayez le fichier dump.sql.

  2. Éditez le fichier dump.sql avec un logiciel comme vim download : vim online.

  3. Je suis vraiment nul en SQL. Pour trouver la bonne table, j’ai cherché username_lower,. Cela m’a dirigé vers la table des utilisateurs, puis j’ai recherché « lea ». J’ai modifié les deux entrées de Lea. C’était probablement beaucoup plus simple, mais rappelez-vous que je suis nul en SQL, surtout quand les fichiers font 1,5 Go. Enregistrez le fichier.

  4. Comprimez le fichier dump.sql avec 7zip. Vous devriez avoir un nouveau fichier nommé : dump.sql.gz.

  5. Créez un nouveau dossier dans :file_folder: /var/discourse/shared/standalone/backups/default/. J’ai utilisé « test ».

  6. Si vous avez une bonne connexion Internet, téléchargez le dossier :file_folder: uploads que vous avez obtenu en décompressant votre fichier de sauvegarde, et placez-le dans /var/discourse/shared/standalone/backups/default/test/.
    6.1 Si vous n’avez pas une bonne connexion comme moi, vous devez utiliser votre serveur. Notez le nom de votre fichier de sauvegarde et utilisez cette commande : tar xvzf /var/discourse/shared/standalone/backups/default/yourbackupfile.tar.gz -C /var/discourse/shared/standalone/backups/default/test.
    6.2 Dans le dossier test, vous aurez un fichier dump.sql.gz et un dossier uploads. C’est bon.

  7. Téléversez le fichier dump.sql.gz de votre dossier test pour remplacer le fichier dump.sql.gz corrompu.

  8. Sur votre serveur : allez dans cd /var/discourse/shared/standalone/backups/default/test.

  9. Vous devez recréer votre fichier de sauvegarde. Vous devez utiliser le nom exact de l’ancien fichier de sauvegarde : tar -czvf yourbackupfile.tar.gz uploads/ dump.sql.gz.

  10. Dans votre FTP, allez dans :file_folder: /var/discourse/shared/standalone/backups/default/, supprimez la sauvegarde corrompue ou déplacez-la dans un autre dossier.

  11. Déplacez le nouveau fichier de sauvegarde dans /var/discourse/shared/standalone/backups/default/.

  12. Restaurez la sauvegarde. Je préfère utiliser cette méthode, et si vous en êtes là, vous devriez pouvoir l’utiliser facilement : Restore a backup from the command line.

La restauration de la sauvegarde devrait réussir :sweat_smile:

Facile.

4 « J'aime »

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