Benutzerdatenkorruption bei der Migration von phpBB3 zu WP/Discourse

Gelegentlich und scheinbar direkt nach einem frischen Import von Benutzerdaten von unserer alten phpBB3-basierten Website sehen wir ein Problem, bei dem einige Benutzerdaten während der WP-zu-Discourse-Synchronisierung mit den Daten eines anderen Benutzers beschädigt werden. Es passiert nicht oft und ist nicht reproduzierbar, was unser Entwicklungsteam leider weitgehend dazu veranlasst hat, es als Problem abzuschreiben.

Im ersten Fall wurde eines meiner Testbenutzerkonten als Teil eines frischen Datenimports entfernt, aber der Avatar dieses Testbenutzers wurde dann dem Profil eines anderen Benutzers zugewiesen, und ich war nach Abschluss des Imports als dieser Benutzer angemeldet.

In einem zweiten Fall habe ich einen Testbenutzer in WP registriert, und als die Synchronisierung mit Discourse stattfand, übernahm dieser Testbenutzer den Benutzernamen eines vorhandenen Benutzers in Discourse und einige seiner benutzerdefinierten Profil- und Gruppendaten. Siehe Screenshot..

In beiden Fällen waren doppelte Benutzer in Discourse an der Beschädigung des Testbenutzerkontos beteiligt. Z.B. agmolnar und agmolnar1 und tbm960c und tbm960c1

Wir hatten eine Reihe dieser doppelten Benutzer, die wahrscheinlich von anonymen Benutzern in der importierten phpBB3-Datendatei stammten.

Hat jemand schon einmal etwas Ähnliches gesehen oder Hinweise darauf, was hier das Problem sein könnte? Wäre es lohnenswert, wenn unser Team die phpBB3-Importdatei vor einem frischen Import von anonymen Benutzern bereinigt?

Vielen Dank für jeden Vorschlag.

Hallo Ryan,

Vielleicht können Sie sich diese Dateien ansehen und nützliche Informationen finden:

Auch:

Und:

Vielleicht können Sie diesen Teil so modifizieren, dass keine anonymen Benutzer importiert werden, oder einen Hinweis finden, der zu Ihrem seltsamen Problem führt.

Danke Coin-coin. Wenn wir anonyme Benutzer vor dem Import aus der Benutzerdatendatei entfernen, gehe ich davon aus, dass alle anonymen Beiträge dem Benutzer „system“ zugewiesen werden, wie sie es ohnehin sind. Gibt es einen Grund, den ich nicht kenne, warum anonyme Benutzer aus unserer phpBB-Instanz in der Importdatei verbleiben sollten?

Ich entnehme dies und anderen Threads wie…

Das Problem für uns scheint mit den anonymen Benutzern zusammenzuhängen, die im Wesentlichen Duplikate von Benutzern sind, die in WP nicht existieren, ein frischer Import nach WP, der die Struktur der WP-Benutzer-IDs ändert, aber nicht die Discourse-IDs, indem neu erstellte WP-Testbenutzer eliminiert werden, und die Tatsache, dass Discourse versucht, Benutzer zuerst nach externer WP-ID zuzuordnen.

Wenn wir einen frischen Import durchführen, werden einige WP-Testbenutzer aus der Datenbank entfernt. Die Benutzer-IDs einiger anonymer phpBB-Benutzer, nach denen ich gesucht habe, scheinen alle die höchsten ganzzahligen Benutzer-IDs in Discourse zu haben (4505, 4506 usw.). Es scheint also, dass, wenn wir einen frischen Import durchführen und Testkonten in WP löschen, ein neu erstellter Benutzer in WP dann mit der alten ID des nun nicht mehr existierenden alten Testbenutzers synchronisiert wird.

Indem wir erzwingen, dass Benutzer beim frischen Import per E-Mail statt nach externer ID abgeglichen werden, wie in Beitrag Nr. 5 oben beschrieben, sollten wir die Möglichkeit einer ungewollten Zusammenführung von alten und neuen Benutzern ausschließen können.

Klingt das alles vernünftig?

Danke

Ein Problem dabei ist, dass die Zuordnung von Beiträgen zu einzelnen Benutzern verloren geht, sodass es schwierig wird, einer Konversation zu folgen, in der alle Beiträge von einem einzigen system-Benutzer zu stammen scheinen – Sie können einzelne Teilnehmer nicht voneinander unterscheiden.

Genau; konzeptionell könnten Sie die Dinge so belassen, wie sie sind, und manuell die Admin-Benutzerprofil-UI verwenden, um Benutzer zusammenzuführen, die dieselben sein sollten, ODER Sie könnten einfach E-Mails als externe ID senden, wie Sie vorschlagen, was dazu führt, dass neue Anmeldungen mit einem vorhandenen Konto mit einer übereinstimmenden E-Mail-Adresse verbunden werden.

Letzteres ist eindeutig der Weg des geringsten Widerstands :+1:

@kiefferr Mir sind einige Details in den von Ihnen eingefügten Bildern aufgefallen und habe sie entfernt, falls Sie sie nicht teilen wollten. Laden Sie die Bilder gerne wieder hoch, falls nötig. :slight_smile: :+1:

1 „Gefällt mir“

Sagen Sie, dass Sie sowohl die Discourse- als auch die phpbb3-Communities gleichzeitig betreiben und regelmäßig Daten aus phpbb3 importieren?

Das scheint im Moment so zu sein, da die Entwicklung unserer neuen WP/Discourse-Website schleppend vorangeht, aber nein, Discourse ist noch in der Entwicklung. Wir ersetzen eine benutzerdefinierte Website, die um phpbb3 herum aufgebaut wurde.

Wir haben einen ersten Import durchgeführt und uns dann entschieden, vor dem endgültigen Import vor der Umstellung einen weiteren Testimport durchzuführen. Ich bin froh, dass wir das getan haben, denn ich möchte diese Fehler nicht auf einer Live-Website verfolgen.

1 „Gefällt mir“

Hallo Leute, ich habe eine Nachfrage, wenn ihr so freundlich wärt. Ich habe die obigen Ergebnisse mit dem Entwicklungsteam geteilt, bezüglich der Zwangszuordnung von Benutzern per E-Mail anstelle von externen IDs während des endgültigen Imports/der Migration, kurz bevor wir live gehen, sowie dem Löschen von SSO-Datensätzen, damit diese sauber neu verbreitet werden können.

Aber sie scheinen jetzt zu denken, dass etwas mit den ursprünglichen phpBB3-Exportdaten nicht stimmte, nämlich dass es doppelte/anonyme Benutzer in diesen Daten gibt und auch einige phpBB-Benutzer ohne zugehörige E-Mails. Das alles scheint etwas zu sein, womit Discourse umgehen kann, was den Import von phpBB3-Daten angeht. Habe ich Unrecht? Insbesondere in Bezug auf die Zuweisung von fiktiven Benutzernamen an anonyme Benutzer durch Discourse, das ist Standardvorgehensweise.

Wenn wir sauberere Daten aus unserer aktuellen phpBB3-Installation erhalten müssen, können wir das wahrscheinlich tun. Aber es scheint mir nicht, dass wir die phpBB-Daten ändern müssen oder sollten. Das war nicht wirklich das Problem.

Wir haben eine Neuinstallation von Discourse durchgeführt und erfolgreich Daten aus phpBB importiert.

Hier sind unsere Ergebnisse:
Die Tabelle „…_users“ enthält insgesamt 3270 Datensätze.
Beim Herunterladen der importierten Benutzer aus Discourse stellten wir fest, dass es 3251 Benutzer in Discourse gibt.
Bei unserer Analyse stellten wir fest, dass mehrere Benutzer eine angehängte „1“ in ihren Discourse-Benutzernamen haben, die tatsächlich von ihren Benutzernamen in den phpBB-Daten stammt. Nur ein bestimmter Benutzer ist „redacted_username1“, der in den phpBB-Daten nicht existiert. Der Benutzer „redacted_username“ ist jedoch in den phpBB-Daten vorhanden.

Die E-Mail, die dem Discourse-Benutzernamen „edacted_username1“ zugeordnet ist, lautet „anonymous_52996ba94025464fdf3e5f3ae131bdf5@no-email.invalid“. Dies deutet darauf hin, dass der Benutzername „redacted_username“ bereits von einem anonymen Benutzer belegt war, der dann „1“ zu seinem Benutzernamen hinzugefügt hat.

Um solche Vorkommnisse bei zukünftigen Importen zu verhindern, müssen wir frische Daten erhalten, die anonyme und andere unerwünschte Benutzer ausschließen.

Die Diskrepanz bei der Benutzeranzahl zwischen phpBB und Discourse beträgt 19. Innerhalb der phpBB-Daten gibt es 53 Benutzer, denen keine E-Mail für ihre Konten zugeordnet ist.

Bei der Suche nach „anonymen“ Benutzern in Discourse werden 32 Benutzer mit anonymen E-Mails zurückgegeben, die derzeit gesperrt sind. Die Benutzernamen, die diesen anonymen Benutzern zugewiesen sind, können nicht in den phpBB-Daten gefunden werden. Dies impliziert, dass Discourse fiktive Benutzernamen für anonyme Benutzer zuweist, was potenziell zukünftige Fehler verursachen könnte.

Zusammenfassend wurden 19 Benutzer ohne E-Mail nicht importiert, während 32 Benutzer als anonyme E-Mails mit erfundenen Benutzernamen synchronisiert wurden.

Bitte stellen Sie saubere PHPBB-Daten zur Verfügung, damit wir sie importieren können.

Darüber hinaus, wenn Sie Gedanken dazu haben, lassen Sie es uns bitte wissen.

Sofern Sie diese Benutzer nicht aus der Datenbank löschen, würde ich das Skript so ändern, dass diese Benutzer ignoriert werden. Einen partiellen Dump zu erhalten, ist wahrscheinlich nicht einfach zu wiederholen.

Wenn Sie diese Benutzer einfach von der aktuellen Website löschen können, scheint das eine gute Lösung zu sein. Meine bevorzugte Methode in Situationen wie Ihrer ist es, direkt auf die Live-Datenbank zuzugreifen, anstatt wiederholt einen Dump zu übertragen.

1 „Gefällt mir“