Migrare un forum vBulletin 4 a 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 Mi Piace

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 Mi Piace

Volevo provare Discourse convertendo il nostro sostanzioso database VBulletin, quindi ho deciso di provare questo script.

Ha importato utenti e gruppi, ma è fallito un paio di volte sulle sottocategorie.

   importazione delle categorie di primo livello...
        7 / 7 (100.0%)  [902 elementi/min]   n]
importazione delle categorie figlie...
Traceback (most recent call last):
        5: from script/import_scripts/vbulletin.rb:942:in `<main>'
        4: from /home/peterb/discourse/script/import_scripts/base.rb:47:in `perform'
        3: from script/import_scripts/vbulletin.rb:84:in `execute'
        2: from script/import_scripts/vbulletin.rb:287:in `import_categories'
        1: from script/import_scripts/vbulletin.rb:287:in `each'
script/import_scripts/vbulletin.rb:289:in `block in import_categories': undefined method `[]' for nil:NilClass (NoMethodError)

Ho verificato varie cose come la codifica UTF8, le risorse del server, ecc., ma ora non so più cosa controllare.
Qualche idea?
Grazie.

Sto eseguendo un’importazione di un forum vBulletin da 8 milioni di post. Ho aggiunto il supporto per i like (a quanto pare tramite un plugin o una modifica) e i sondaggi.

Non riesco a capire esattamente qual è il problema dall’errore. Il mio sospetto è che in qualche modo non riesca a trovare un parentid.

Penso che tu debba in qualche modo correggere

    parent_category_id: category_id_from_imported_category_id(category["parentid"])

in modo che non fallisca se category['parentid'] è nil.

1 Mi Piace

Grazie. Ho dato un’altra occhiata e sembra che gli amministratori abbiano creato delle “sezioni” di categorie impostando l’ID genitore su -1, che non esiste.

3 Mi Piace

Sì. Sembra che tu abbia capito. Che cose del genere vadano storte è molto più la norma che l’eccezione. Poi devi decidere se correggere il problema nel database o modificare il codice per gestire un database difettoso.

3 Mi Piace

È la solita storia con qualsiasi migrazione di dati: qualsiasi script tu trovi non sarà mai in grado di gestire ogni evenienza. Non aiuta il fatto che l’unico momento in cui riesco a dedicarmi a questo lavoro sembri essere la notte tarda (è un lavoro gratuito per il mio club di automobilisti). Il sito vBulletin è piuttosto personalizzato, quindi vedremo quali altre sorprese emergeranno.

4 Mi Piace

Capisco che esista uno script in grado di gestire le importazioni da vBulletin 4, ma non vedo nulla riguardo alla reindirizzazione di tutti gli URL al nuovo formato degli URL di Discourse.

Come gestite voi questa situazione? Cosa succede a tutti i link esterni presenti nei vostri forum?

Ecco qui:

3 Mi Piace

Grazie @RGJ, ma puoi spiegare come funziona questo nella vita reale? Cosa fa esattamente questo script? Crea un tipo di URL alias (in Discourse) per gli URL attuali/corretti importati in Discourse?

Come consiglieresti di spostare un vecchio dominio su Vbulletin (www.example1.com) verso un nuovo dominio su Discourse (www.exmple2.com)?

Penso che l’ideale sarebbe che il vecchio dominio del forum reindirizzasse tutto il traffico/collegamenti in entrata verso il nuovo dominio basandosi su una lista di riscritture 301. Come consiglieresti di creare una tale lista di riscritture di reindirizzamento?

Non è necessario cambiare il dominio, ma se lo fai, il processo prevede due passaggi.

  1. reindirizza TUTTO dal vecchio dominio al nuovo
  2. I permalink di Discourse convertiranno gli URL in stile vBulletin nei corretti argomenti di Discourse.

Se non cambi il dominio ma lo punti semplicemente alla nuova configurazione di Discourse, allora hai solo il punto #2.

1 Mi Piace

Come funzionano gli header di reindirizzamento HTTP 301 o 302 di Discourse?

Sono interessato dal punto di vista SEO a sapere se un cambio di dominio influenzerà il posizionamento nei risultati di ricerca.

301 Spostato Permanentemente

La parola permalink dice tutto :slight_smile:

1 Mi Piace

Puoi verificare di persona visitando /admin/customize/permalinks e creando un permalink per vedere come funziona.

Ho un problema con l’importazione incompleta degli allegati, simile a quanto già segnalato in precedenza, ma lo script non genera alcun errore.
Il database è piccolo (71M) e l’intera importazione viene completata in 0 minuti e 23 secondi.


La maggior parte degli allegati manca nei post.
Ho eseguito le query SQL direttamente sul mio database vb4, esattamente come nello script, e restituiscono i dati corretti, quindi al momento non sono sicuro di dove risieda il problema…

I file allegati mancanti non sono collegati direttamente nei post? Credo che lo script recuperi solo le immagini menzionate nei post, non quelle semplicemente allegate al post.

Ho uno script che le importa, ma non sono ancora riuscito a inviare una PR.

Sì, penso che tu abbia ragione, @pfaffman, è proprio così.
Resto in attesa di quello script quando lo avrai caricato!

Se hai un budget, fammelo sapere. Intendo inviare una versione dopo aver completato questa importazione, ma devo rimuovere una buona quantità di codice dedicato solo a questa operazione, ed è per questo che non è successo un anno fa…

1 Mi Piace