Dopo aver utilizzato con successo l’importatore nel mio primo ambiente di test, ora volevo importare di nuovo (o da zero) il vecchio forum in un nuovo ambiente che dovrebbe diventare quello reale, ma ora è fallito.
Ho ricevuto un errore:
/var/www/discourse/plugins/discourse-migratepassword/plugin.rb:71:in `crypt’: codifiche dei caratteri incompatibili: ASCII-8BIT e UTF-8 (Encoding::CompatibilityError).
Apparentemente questo si verifica con il terzo utente, che ha un umlaut.
Ora, cosa ho cambiato rispetto alla volta in cui ha funzionato?
nuova VM con Ubuntu 18.04.3 LTS (quella precedente era la 16)
Discourse aggiornato (versione più recente)
impostato “nomi utente Unicode” con [äöüßÄÖÜẞ] dato che molti dei miei utenti hanno umlaut nei nomi utente (il primo import è stato fatto senza questa impostazione e gli utenti sono stati importati perdendo i punti sugli umlaut)
migratepassword preinstallato (l’ultima volta l’ho installato in un secondo momento).
Qualcuno ha un’idea su cosa stia fallendo? Vorrei davvero migrare i miei utenti senza dover cambiare i nomi utente.
Sembra che stia attivando un bug nel plugin migratepassword. Nei miei test funziona, quindi non sono sicuro di cosa stia succedendo qui. Ti suggerisco di disabilitare il plugin durante la migrazione. In ogni caso, non è necessario durante la migrazione.
Ho un esportazione del database phpBB3 sul mio computer locale.
Ho installato Discourse in locale sul mio Mac con Docker per Desktop.
Ora sto cercando di seguire le istruzioni in questo argomento, ma mi blocco perché uso Docker, ma non Ubuntu, e si tratta di un ambiente locale. Quindi non so come procedere
nel mio directory di Discourse non c’è alcun file app.yml.
Mi dispiace, non ho alcuna esperienza con Mac, Docker e la tua configurazione. Potresti riuscire a seguire approssimativamente la guida Importazione tramite ambiente di sviluppo… ma non posso offrirti alcun supporto a riguardo.
A meno che tu non abbia bisogno di eseguire un backup per il ripristino su un server diverso, sei a posto. Puoi procedere a utilizzarlo e Sidekiq elaborerà i dati.
I thread normali di utenti eliminati vengono importati correttamente. Come posso modificare lo script di importazione in modo che anche i sondaggi di utenti eliminati vengano importati?
Sto attualmente provando una migrazione da phpBB per la prima volta e mi chiedo se, trasferendo un backup di Discourse in un secondo momento, questo conterrà tutte le informazioni metadate dall’importazione (come l’ID originale del post da phpBB). Il motivo è che sto pensando di eseguire l’importazione su una macchina più potente per accelerare il processo e poi far funzionare il forum su un VPS, ma potrei eseguire un’altra importazione incrementale dopo aver spostato tutto sul VPS. Mi chiedo se sia sufficiente fare un backup e reimportazione di Discourse o se sia meglio eseguire un dump del database in qualche altro modo (quale?).
Un’altra domanda: le riscritture degli URL nell’importatore sono sicure in caso di successivo cambio di dominio? Avevo intenzione di utilizzare un dominio o un sottodominio diverso per la migrazione iniziale e poi passare al dominio reale in un secondo momento.
Ho appena completato la prima migrazione di prova e, prima di tutto, voglio ringraziare @gerhard e tutti gli altri che hanno contribuito. È incredibile quanto bene abbia funzionato al primo tentativo. Mi sono volute circa 24 ore per importare quasi 900.000 post con utenti, messaggi privati e altro, e i risultati sembrano ottimi per un primo tentativo. È semplicemente fantastico avere un importatore così eccellente per portare a termine questo lavoro.
Ci sono però alcune cose, e la più importante che sto cercando di individuare è che alcuni link interni sembrano essere andati completamente storti, mentre altri hanno funzionato molto bene. Per essere più precisi, molti di più sembrano essere corretti rispetto a quelli errati. Sto cercando di capire un pattern per capire quali non hanno funzionato. Qualcuno può offrire qualche spunto su come funziona la modifica dei link interni? Probabilmente ci sono delle insidie dove potrebbe fallire?
Nota a margine: Subito dopo l’importazione ho visto che tutte le avatar mancavano nelle citazioni, ma poi ho scoperto che sembrano essere generate e sembra che dopo 20 minuti tutto sia presente ora. Fascinante
Per quanto riguarda il tempo di importazione: Questo è stato eseguito su un VPS Hetzner a 4 core con core CPU esclusivi - penso che proverò a ripeterlo su un server bare metal solo per l’importazione per migliorare i tempi di migrazione. Devo prima vedere come funziona lo spostamento del backup di Discourse.
La riscrittura dei collegamenti interni fallirà quando un post contiene un link a un altro post che non è ancora stato importato. I post vengono importati nell’ordine della loro creazione originale.
È un suggerimento interessante. Non capisco perché questo sarebbe stato il caso in alcuni degli esempi che ho controllato, ma seguirò sicuramente questa strada. La cosa strana è che nel mio caso collega i post sbagliati. In caso di errore, mi aspetterei che non facesse nulla o lasciasse il link invariato. Purtroppo la mia conoscenza di Ruby è quasi nulla, ma controllerò comunque il codice.
Esiste un modo per aggirare questo problema? Penso che potrebbe accadere spesso con post di tipo tutorial che vengono modificati e aggiornati ripetutamente, aggiungendo link. C’è qualche possibilità di evitarlo, a parte modificare manualmente quei post?
Hmm, ho appena notato che i gruppi di utenti non sono stati importati e ho anche visto che non sono elencati nel post iniziale qui, ma sono effettivamente tra le prime cose che vengono elencate nell’importatore. Mi chiedo se ci sia un modo per importarli includendo l’associazione degli utenti a quei gruppi o se ciò semplicemente non funzioni ancora. Nel secondo caso, probabilmente dovremmo trovare una soluzione alternativa.
Sì, è strano. Questo suggerisce che alcuni dei tuoi link locali sono in un formato diverso da quello previsto dallo script di importazione, il che fa sì che l’espressione regolare individui il post sbagliato da cercare. Se qualcuno ha modificato un post per puntare a un post che non esisteva al momento in cui il post è stato originariamente scritto (hai confermato che è questo il caso?), potrebbe aver utilizzato un altro metodo per creare il link, confondendo lo script.
È sorprendente quanto ogni importazione (specialmente per un forum maturo) sia unica. È piuttosto raro che un’importazione si limiti a eseguire lo script (ma, suppongo, le persone siano più propense ad assumermi se la loro importazione presenta delle complicazioni).