Après avoir utilisé avec succès l’outil d’importation sur mon premier environnement de test, je souhaitais maintenant réimporter l’ancien forum (ou l’importer à nouveau) dans un nouvel environnement qui devrait devenir l’environnement de production, mais cette fois, cela a échoué.
Je reçois l’erreur suivante :
/var/www/discourse/plugins/discourse-migratepassword/plugin.rb:71:in `crypt’: encodages de caractères incompatibles : ASCII-8BIT et UTF-8 (Encoding::CompatibilityError).
Apparemment, cela se produit au niveau du troisième utilisateur, et cet utilisateur possède un tréma (umlaut).
Maintenant, qu’est-ce que j’ai changé depuis que cela fonctionnait ?
Une nouvelle machine virtuelle avec Ubuntu 18.04.3 LTS (l’ancienne était sous 16)
Discourse mis à jour (dernière version)
Activation de l’option « noms d’utilisateur Unicode » avec [äöüßÄÖÜẞ], car de nombreux utilisateurs ont des trémas dans leurs noms d’utilisateur (la première importation a été effectuée sans ce paramètre, ce qui a entraîné la perte des points sur les trémas des noms d’utilisateur)
Installation préalable du plugin migratepassword (la dernière fois, je l’avais installé plus tard).
Avez-vous une idée de ce qui cause cet échec ? J’aimerais vraiment pouvoir migrer mes utilisateurs sans avoir à modifier leurs noms d’utilisateur.
On dirait que cela déclenche un bug dans le plugin migratepassword. Cela fonctionne dans mes tests, donc je ne suis pas sûr de ce qui se passe ici. Je vous suggère de désactiver le plugin pendant la migration. Il n’est de toute façon pas nécessaire pendant la migration.
J’ai une exportation de base de données phpBB3 en local.
J’ai installé Discourse localement sur mon Mac avec Docker pour Desktop.
Je tente maintenant de suivre les instructions de ce sujet, mais je suis bloqué car j’utilise Docker, mais pas Ubuntu, et il s’agit d’un environnement local. Je ne sais donc pas comment procéder
Il n’y a pas de fichier app.yml dans mon répertoire Discourse.
Pourriez-vous m’aider à savoir quelles étapes suivre ?
Je suis désolé, je n’ai aucune expérience avec Mac, Docker et votre configuration. Vous pourriez peut-être suivre approximativement l’importation via un environnement de développement… mais je ne peux pas vraiment vous apporter de soutien à ce sujet.
Je pense que vous feriez mieux de suivre le « guide d’installation officiel » (même sur votre Mac local) et d’exécuter l’installateur de cette manière.
Hourra, j’ai réussi à effectuer une importation !
Finalement, j’ai simplement décidé de prendre un droplet DO et de continuer à partir de là. Et ça a fonctionné !
Une question à propos de Sidekiq, @gerhard, vous dites :
Que fait exactement cela ? Dois-je attendre que ce soit terminé avant de pouvoir faire quoi que ce soit sur le forum ?
À moins que vous n’ayez besoin de sauvegarder pour restaurer sur un autre serveur, tout est en ordre. Vous pouvez l’utiliser dès maintenant, et Sidekiq traitera les tâches.
Bonjour, actuellement j’essaie d’importer les données d’un forum phpBB 3.1 vers Discourse. Cependant, l’importation des sondages ne fonctionne pas pour moi :
Si le propriétaire du sujet (créateur du sondage) a été supprimé, je reçois le message d’erreur suivant pendant l’importation :
Erreur lors de la création du message 70978. Ignoré. [“Vous n’avez pas le droit de créer des sondages.”]
Concernant les options de sondage suivantes :
<12
12
12
Je reçois le message d’erreur suivant :
Erreur lors de la création du message 345655. Ignoré. [“Un sondage doit avoir des options différentes.”]
Les threads normaux provenant d’utilisateurs supprimés sont importés correctement. Comment puis-je modifier le script d’importation pour que les sondages provenant d’utilisateurs supprimés soient également importés ?
Je tente actuellement une migration depuis phpBB pour la première fois et je me demande si, lors du transfert d’une sauvegarde Discourse ultérieure, celle-ci contiendra toutes les métadonnées de l’importation (comme l’ID d’origine du post depuis phpBB). La raison en est que j’envisage d’effectuer l’importation sur une machine plus puissante pour accélérer le processus, puis de faire fonctionner le forum sur un VPS par la suite, tout en réalisant peut-être un autre import incrémental après avoir tout migré vers le VPS. Je me demande si une sauvegarde et une réimportation Discourse suffisent, ou si je ferais mieux de faire un dump de la base de données d’une autre manière (laquelle ?).
Et une dernière question : les réécritures d’URL dans l’outil d’importation sont-elles sûres en cas de changement de domaine ultérieur ? J’avais prévu d’utiliser un autre domaine ou sous-domaine pour la migration initiale, puis de basculer vers le vrai domaine plus tard.
Oui, la sauvegarde contient l’ID du message original dans un champ personnalisé. L’exécution de l’importation finale sur le cloud devrait fonctionner sans problème.
Je viens de terminer la première migration de test et, avant toute chose, je tiens à remercier @gerhard et tous les autres qui ont contribué. C’est incroyable de voir à quel point cela a fonctionné du premier coup. Il m’a fallu environ 24 heures pour importer près de 900 000 publications avec les utilisateurs, les messages privés et autres, et les résultats sont vraiment bons pour une première tentative. C’est tout simplement formidable de disposer d’un importateur aussi performant pour réaliser cela.
Il y a toutefois quelques points à régler, et le plus important que je cherche actuellement à identifier, c’est que certains liens internes semblent avoir été complètement erronés, tandis que d’autres ont très bien fonctionné. Pour être plus précis, la grande majorité semble correcte. J’essaie de trouver un modèle pour identifier ceux qui n’ont pas fonctionné. Quelqu’un pourrait-il m’éclairer sur le fonctionnement de la modification des liens internes ? Y a-t-il probablement des pièges susceptibles de causer des échecs ?
Note marginale : Juste après l’importation, j’ai remarqué que toutes les avatars manquaient dans les citations, mais j’ai ensuite découvert qu’elles sont générées automatiquement, et il semble qu’après 20 minutes, tout soit maintenant en place. Fascinant
Concernant le temps d’importation : Cela s’est déroulé sur un VPS Hetzner à 4 cœurs avec des cœurs CPU exclusifs. Je pense que je vais réessayer cela sur un serveur bare metal uniquement pour l’importation afin d’améliorer le temps de migration. Je dois d’abord voir comment déplacer la sauvegarde de Discourse.
La réécriture des liens internes échouera si un message contient un lien vers un autre message qui n’a pas encore été importé. Les messages sont importés dans l’ordre de leur création originale.
C’est un indice intéressant. Je ne vois pas pourquoi ce serait le cas dans certains des cas que j’ai vérifiés, mais je vais certainement explorer cette piste. L’étrange, c’est que cela lie les mauvais articles dans mon cas. En cas d’échec, je m’attendrais à ce que cela ne fasse rien ou laisse le lien tel quel. Malheureusement, mes connaissances en Ruby sont proches de zéro, mais je vais tout de même examiner le code.
Existe-t-il un moyen de contourner ce problème ? Je pense que cela pourrait se produire fréquemment avec des articles de type tutoriel qui sont modifiés et complétés à plusieurs reprises, avec l’ajout de liens. Y a-t-il une possibilité de contourner cela autre que de modifier manuellement ces articles ?
Hmm, je viens de remarquer que les groupes d’utilisateurs n’ont pas été importés. J’ai aussi vu qu’ils ne sont pas listés dans le premier message ici, alors qu’ils figurent bien parmi les premières étapes de l’importateur. Je me demande s’il existe un moyen de les importer, y compris en attachant les utilisateurs à ces groupes, ou si cela ne fonctionne tout simplement pas encore ? Dans ce dernier cas, nous devrons probablement trouver une solution de contournement.
Oui, c’est étrange. Cela suggère que certains de vos liens locaux sont dans un format différent de celui attendu par le script d’importation, ce qui fait que l’expression régulière sélectionne le mauvais message à rechercher. Si quelqu’un a modifié un message pour qu’il pointe vers un message qui n’existait pas au moment où le message a été rédigé à l’origine (avez-vous confirmé que c’est le cas ?), il est possible qu’il ait utilisé un autre moyen pour créer le lien, ce qui a perturbé le script.
Il est surprenant de voir à quel point chaque importation (en particulier pour un forum mature) est unique. Il est assez rare qu’une importation se résume simplement à exécuter le script (mais, je suppose, les gens sont plus enclins à m’embaucher si leur importation comporte des complications).