Migrer un forum vBulletin 4 vers Discourse

I know this is a bit of an old topic, but I’ve just completed a comparably sized vb4 migration and am missing a LOT of image attachments, somewhere on the order of 75% of them I’d wager. They are not tombstoned, and all the threads have been rebaked.

Has anyone else dealt with this? How should I go about recovering those images?

Did you see errors when you did the import?

1 « J'aime »

Yes, quite a few ‘Attachment file doesn’t exist’ errors with some ‘Couldn’t find attachment record for post.id=xxx, import_id=xxx’ sprinkled in.

The thing that has me scratching my head is that these are posts that I know have intact attachments, and that those attachments are in the ATTACHMENT_DIR global directory. The threads with missing images are missing ALL the associated images, which seems… not random.

I’m at a loss to find any common factor among the threads/posts with lost images either.

Those messages were your clue that something was amiss. All you can do is diagnose the problem an run the import again.

Every import is a snowflake. I’ve don’t dozens of them. It’s rare that one just works. If you’d like help: Redirecting…

2 « J'aime »

Je voulais essayer Discourse en convertissant notre importante base de données VBulletin, alors j’ai tenté d’utiliser ce script.

Il a importé les utilisateurs et les groupes, mais a échoué à plusieurs reprises sur les sous-catégories.

   importation des catégories de premier niveau...
        7 / 7 (100,0 %)  [902 éléments/min]   n]
importation des catégories enfants...
Traceback (dernier appel interne) :
        5: depuis script/import_scripts/vbulletin.rb:942:in `<main>'
        4: depuis /home/peterb/discourse/script/import_scripts/base.rb:47:in `perform'
        3: depuis script/import_scripts/vbulletin.rb:84:in `execute'
        2: depuis script/import_scripts/vbulletin.rb:287:in `import_categories'
        1: depuis script/import_scripts/vbulletin.rb:287:in `each'
script/import_scripts/vbulletin.rb:289:in `block in import_categories': méthode `[]' non définie pour nil:NilClass (NoMethodError)

J’ai vérifié divers éléments tels que le codage UTF8, les ressources du serveur, etc., mais je suis maintenant un peu perdu quant à ce qu’il reste à vérifier.
Des idées ?
Merci.

Je suis en train d’exécuter une importation vBulletin de 8 millions de publications. J’ai ajouté le support des « likes » (apparemment via un plugin ou une modification) et des sondages.

Je ne parviens pas vraiment à identifier la cause de l’erreur à partir du message. Mon hypothèse est qu’il ne parvient pas à trouver un parentid.

Je pense qu’il faut modifier

    parent_category_id: category_id_from_imported_category_id(category["parentid"])

de manière à ce que cela ne plante pas si category['parentid'] est nil.

1 « J'aime »

Merci. J’ai revu la situation et il semble que les administrateurs aient créé des « sections » de catégories en définissant l’ID parent sur -1… ce qui n’existe pas.

3 « J'aime »

Ouais. On dirait que tu as trouvé la solution. Que des trucs comme ça tournent mal est bien plus la norme que l’exception. Ensuite, tu dois décider s’il faut corriger le problème dans la base de données ou adapter le code pour gérer ta base de données corrompue.

3 « J'aime »

C’est classique avec n’importe quelle migration de données : quel que soit le script que vous trouvez, il ne couvrira jamais toutes les éventualités. Cela n’aide pas non plus que le seul moment où j’ai du temps libre pour travailler là-dessus semble être tard dans la nuit (c’est un service bénévole pour mon club de voitures). Le site vBulletin est assez fortement personnalisé, donc je verrai quelles autres surprises vont surgir.

4 « J'aime »

Je comprends qu’il existe un script capable de gérer les importations de vBulletin 4, mais je ne vois rien concernant la redirection de toutes les URLs vers le nouveau format d’URL de Discourse.

Comment gérez-vous cela ? Que deviennent tous les liens externes présents sur vos forums ?

Voici :

3 « J'aime »

Merci @RGJ, mais pouvez-vous expliquer comment cela fonctionne dans la vraie vie ? Que fait exactement ce script ? Crée-t-il une sorte d’URL alias (dans Discourse) vers les URL actuelles/correctes importées dans Discourse ?

Comment recommanderiez-vous de migrer un ancien domaine Vbulletin (www.example1.com) vers un nouveau domaine Discourse (www.example2.com) ?

Je pense qu’idéalement, il serait préférable que l’ancien domaine du forum redirige tout le trafic et les liens entrants vers le nouveau domaine sur la base d’une liste de réécritures 301. Comment recommanderiez-vous de créer une telle liste de réécritures de redirection ?

Vous n’avez pas besoin de changer de domaine, mais si vous le faites, le processus comporte deux étapes.

  1. Redirigez TOUT depuis l’ancien domaine vers le nouveau.
  2. Les permaliens de Discourse convertiront les URLs de style vBulletin vers les sujets Discourse correspondants.

Si vous ne changez pas de domaine et pointez simplement vers la nouvelle configuration Discourse, vous n’aurez que l’étape #2.

1 « J'aime »

Comment fonctionnent les en-têtes HTTP de redirection Discourse 301 ou 302 ?

Je m’intéresse, du point de vue du référencement (SEO), à savoir si un changement de domaine affectera les classements.

301 Déplacé de façon permanente

Le mot permalien dit tout :slight_smile:

1 « J'aime »

Vous pouvez le constater vous-même en visitant /admin/customize/permalinks et en créant un permalien pour voir comment cela fonctionne.

Je rencontre un problème avec l’importation incomplète des pièces jointes, similaire à ce qui a déjà été mentionné, mais le script ne génère aucune erreur.
La base de données est petite (71 Mo) et l’importation complète s’achève en 0 min 23 s.


La majorité des pièces jointes manquent dans les messages.
J’ai exécuté les requêtes SQL directement sur ma base de données vb4, comme dans le script, et elles renvoient les données correctes. Je ne sais donc pas encore où se situe le problème…

Les pièces jointes manquantes ne sont-elles pas directement liées dans les messages ? Je pense que le script ne récupère que les images mentionnées dans les messages, et non celles qui sont simplement attachées au message.

J’ai un script qui les importe, mais je n’ai pas encore réussi à soumettre une demande de fusion.

Oui, je pense que tu as raison, @pfaffman, c’est bien le cas.
J’attends ce script quand tu l’auras téléchargé !

Si vous avez un budget, faites-le-moi savoir. Je compte soumettre une version une fois que j’aurai terminé cette importation, mais je dois supprimer une bonne partie du code qui n’est utile que pour cette importation, ce qui explique pourquoi cela n’a pas été fait il y a un an…

1 « J'aime »