Corruzione dati utente nella migrazione da phpBB3 a WP/Discourse

Occasionalmente e apparentemente subito dopo una nuova importazione di dati utente dal nostro vecchio sito basato su phpBB3, riscontriamo un problema in cui alcuni dati utente vengono corrotti con i dati di un altro utente durante la sincronizzazione da WP a Discourse. Non accade spesso e non è riproducibile su richiesta, il che purtroppo ha portato il nostro team di sviluppo a considerarlo in gran parte un problema irrisolvibile.

Nel primo caso, uno dei miei account utente di test è stato rimosso come parte di una nuova importazione di dati, ma l’avatar di quell’utente di test è stato quindi assegnato al profilo di un altro utente e sono stato effettuato l’accesso come quell’utente una volta completata l’importazione.

In un secondo caso, ho registrato un utente di test in WP e quando è avvenuta la sincronizzazione con Discourse, questo utente di test ha assunto il nome utente di un utente esistente in Discourse e alcuni dei suoi dati di profilo e di gruppo personalizzati. Vedi screenshot..

In entrambi questi casi, utenti duplicati in Discourse sono stati coinvolti nella corruzione dell’account dell’utente di test. Ad esempio agmolnar e agmolnar1 e tbm960c e tbm960c1

Avevamo un certo numero di questi utenti duplicati che presumo provengano molto probabilmente da utenti anonimi nel file di dati importato da phpBB3.

Qualcuno ha riscontrato qualcosa di simile in precedenza o ha qualche suggerimento su quale potrebbe essere il problema? Vale la pena che il nostro team ripulisca il file di importazione phpBB3 dagli utenti anonimi prima di effettuare una nuova importazione?

Grazie per qualsiasi suggerimento.

Ciao Ryan,

Potresti dare un’occhiata a questi file e vedere se riesci a trovare informazioni utili:

Inoltre:

E:

Forse puoi modificare questa parte per non importare utenti anonimi, o trovare qualche indizio che porti al tuo strano problema.

Grazie Coin-coin. Se eliminiamo gli utenti anonimi dal file dei dati utente prima dell’importazione, presumo che tutti i post anonimi verranno assegnati all’utente “system” come già avviene. C’è qualche motivo di cui potrei non essere a conoscenza per cui non dovremmo includere gli utenti anonimi dalla nostra istanza phpBB nel file di importazione?

Sto raccogliendo informazioni da questo e da altri thread come…

Il problema per noi sembra essere correlato agli utenti anonimi, che sono essenzialmente utenti duplicati che non esistono in WP, una nuova importazione in WP che cambia la struttura degli ID utente di WP ma non gli ID di Discourse eliminando gli utenti di test di WP appena creati, e il fatto che Discourse tenta di associare gli utenti prima tramite l’ID WP esterno.

Quando eseguiamo una nuova importazione, rimuove alcuni utenti di test di WP dal database. Gli ID utente di un paio di utenti anonimi di phpBB che ho cercato sembrano avere gli ID utente interi più alti in Discourse (4505, 4506, ecc.). Quindi sembra che quando eseguiamo una nuova importazione ed eliminiamo gli account di test in WP, un utente appena creato in WP viene quindi sincronizzato con il vecchio ID del vecchio utente non più esistente.

Forzando l’associazione degli utenti tramite email invece che tramite ID esterno durante la nuova importazione, come descritto nel post #5 collegato sopra, dovremmo essere in grado di precludere la possibilità di qualsiasi fusione indesiderata di vecchi e nuovi utenti.

Tutto questo sembra ragionevole?

Grazie

Un problema con questo è che l’attribuzione dei post agli utenti unici andrà persa, quindi sarà difficile seguire una conversazione in cui tutti i post sembrano provenire da un singolo utente system: non sarai in grado di distinguere i partecipanti distinti l’uno dall’altro.

Esattamente; concettualmente, potresti lasciare le cose come stanno e utilizzare manualmente l’interfaccia del profilo utente dell’amministratore per unire gli utenti che dovrebbero essere gli stessi, OPPURE potresti semplicemente inviare email come ID esterno invece, come suggerisci, il che consentirà ai nuovi accessi di essere collegati a un account esistente con un indirizzo email corrispondente.

Quest’ultima è chiaramente la strada di minor resistenza :+1:

@kiefferr Ho notato alcuni dettagli nelle immagini che hai incluso e li ho rimossi nel caso non intendessi condividerli. Sentiti libero di ricaricare le immagini, se necessario. :slight_smile: :+1:

1 Mi Piace

Stai dicendo che gestisci contemporaneamente entrambe le community, discourse e phpbb3, e importi periodicamente dati da phpbb3?

È quello che sembra a questo punto mentre lo sviluppo del nostro nuovo sito WP/Discourse continua a trascinarsi, ma no, Discourse è ancora in fase di sviluppo. Stiamo sostituendo un sito personalizzato che è stato costruito attorno a phpbb3.

Abbiamo eseguito un’importazione iniziale e poi abbiamo deciso di fare un’altra importazione di prova prima di un’importazione finale prima del passaggio. Sono contento di averlo fatto, perché non vorrei dover correggere questi bug su un sito live.

1 Mi Piace

Ciao ragazzi, ho un seguito se foste così gentili. Ho condiviso i risultati di cui sopra con il team di sviluppo riguardo all’obbligo di associare gli utenti tramite email anziché ID esterni durante l’importazione/migrazione finale prima di andare in diretta, nonché all’eliminazione dei record SSO in modo che possano essere ripropagato in modo pulito.

Ma ora sembrano pensare che ci sia stato qualcosa di sbagliato nei dati originali di esportazione di phpBB3, in particolare che ci siano utenti duplicati/anonimi in quei dati, nonché alcuni utenti phpBB senza email associate. Tutto ciò sembra essere qualcosa che Discourse dovrebbe essere in grado di gestire in termini di importazione di dati phpBB3. Mi sbaglio? Soprattutto per quanto riguarda il modo in cui Discourse assegna nomi utente fittizi agli utenti anonimi, questa è una procedura operativa standard.

Se dobbiamo ottenere dati più puliti dalla nostra attuale installazione di phpBB3, probabilmente possiamo farlo. Ma non sembra che dobbiamo o dovremmo modificare i dati di phpBB. Quello non era davvero il problema.

Abbiamo eseguito una nuova installazione di Discourse e importato con successo i dati da phpBB.

Ecco le nostre scoperte:
La tabella “…_users” contiene un totale di 3270 record.
Scaricando gli utenti importati da Discourse, abbiamo osservato che ci sono 3251 utenti in Discourse.
Durante la nostra analisi, abbiamo scoperto che diversi utenti hanno un “1” aggiunto ai loro nomi utente di Discourse, che in realtà provenivano dai loro nomi utente nei dati di phpBB. Solo un utente specifico è “redacted_username1”, che non esiste nei dati di phpBB. Tuttavia, l’utente “redacted_username” è presente nei dati di phpBB.

L’email associata al nome utente di Discourse “redacted_username1” è “anonymous_52996ba94025464fdf3e5f3ae131bdf5@no-email.invalid”. Ciò suggerisce che il nome utente “redacted_username” era già occupato da un utente anonimo, che poi ha aggiunto “1” al proprio nome utente.

Per prevenire tali occorrenze nelle importazioni future, dobbiamo ottenere dati freschi che escludano utenti anonimi e altri utenti indesiderati.

La discrepanza nel conteggio degli utenti tra phpBB e Discourse è di 19. All’interno dei dati di phpBB, ci sono 53 utenti che non hanno un’email associata ai loro account.

Quando si cerca utenti “anonymous” in Discourse, restituisce 32 utenti con email anonime che sono attualmente sospesi. I nomi utente assegnati a questi utenti anonimi non possono essere trovati nei dati di phpBB. Ciò implica che Discourse sta assegnando nomi utente fittizi agli utenti anonimi, il che potrebbe potenzialmente causare errori futuri.

In sintesi, 19 utenti senza email non sono stati importati, mentre 32 utenti sono stati sincronizzati come email anonime con nomi utente fabbricati.

Si prega di condividere dati PHPBB puliti in modo che possiamo importarli.

Inoltre, se avete qualche pensiero in merito, fatecelo sapere.

A meno che tu non intenda eliminare tali utenti dal database, modificherei lo script per ignorare tali utenti. Ottenere un dump parziale probabilmente non sarà facilmente ripetibile.

Se puoi semplicemente eliminare tali utenti dal sito corrente, sembra una buona soluzione. La mia preferenza in situazioni come la tua è leggere direttamente il database live piuttosto che trasferire ripetutamente un dump.

1 Mi Piace