Migration von vB3 zu Discourse abgeschlossen, einschließlich Legacy vB3, Dank an Likes

Gerade abgeschlossen, größtenteils (noch im Testbetrieb, aber die „schwierigen Teile

Gut gemacht und danke fürs Teilen!!

Danke @codinghorror

Ich habe gerade einen kleinen Fehler gefunden, an dem ich arbeiten werde. Die import_likes-Routine überträgt keine Likes auf den ersten Beitrag (den “Themenstarter”), sondern nur auf die Antworten.

Ich muss die Ärmel hochkrempeln und das herausfinden, um dann die aktualisierte import_likes-Routine zu veröffentlichen.

Anscheinend war ich etwas zu voreilig mit meinem Post, da noch ein kleiner Kobold zu besiegen ist, bevor ich den Sieg verkünden kann.

Update:

Ich habe diesen Code zum PHP-Skript in vB3 hinzugefügt, um den Unterschied zwischen der Behandlung des ersten Beitrags in einem Thema/Thread in vB3 und Discourse auszugleichen:

    <?php
    #vB3-Code zur Behandlung der Identifizierung des ersten Beitrags in einem Thema in der Tabelle post_custom_fields durch Discourse
    $query = 'SELECT firstpostid FROM thread WHERE threadid =' . $action['threadid'] . ' LIMIT 1';
    $threadinfo = $vbulletin->db->query_first($query);
    if ($threadinfo['firstpostid'] == $action['postid']) {
        $action['postid'] = 'thread-' . $action['threadid'];
    }

Jetzt funktioniert es wie vorgesehen, und die “Dankesbekundungen” in vB3 werden einschließlich des ersten Beitrags im Thema nach Discourse migriert, indem die Migrationstabelle von vB3 an die Discourse-Tabelle post_custom_fields angepasst wird.

Ich führe derzeit den Endtest durch, aber basierend auf den Vorabtests sieht es so aus, als würde es funktionieren.

Außerdem habe ich den Code in meinem ursprünglichen Beitrag mit dem oben genannten PHP-Fragment aktualisiert.

Ich habe gelesen, dass Sie Passwörter nicht migrieren, da die Hashes unterschiedlich sind. Vielleicht möchten Sie sich mein Plugin zur Passwortmigration ansehen (hier). Es unterstützt wahrscheinlich bereits VB3-Hashes, und falls nicht, bin ich gerne bereit, diese Funktion hinzuzufügen.

Danke, Michael,

Wir werden Passwörter nicht migrieren und bevorzugen es, dass Benutzer ihre Passwörter ändern (und auf stärkere, längere Passwörter umstellen).

Trotzdem vielen Dank für das Hilfsangebot! Das wird sehr geschätzt.

Wir haben jedoch ein kleines Problem, bei dem Sie uns vielleicht helfen können.

Aus irgendeinem Grund wird die Gesamtzahl der Likes der Benutzer in ihren Profilansichten nicht korrekt aktualisiert, obwohl sonst alles in Ordnung zu sein scheint. Ich habe versucht, das Problem mit Rake zu beheben, aber meine Rake-Versuche liefern nicht die gewünschten Ergebnisse.

Wissen Sie, wie man diese Profil-Like-Zähler manuell aktualisiert?

Welchen Rake-Task hast du verwendet? Und was ist falsch? Sind alle Zahlen völlig daneben, oder nur bei einigen Benutzern, oder…?

Hallo.

Zunächst habe ich den einzigen Rake-Task ausprobiert, der mir (damals) Sinn ergab – da das Problem mit user_actions und post_actions zusammenhängt. Doch er hat nichts gebracht (im Nachhinein hätte ich eigentlich erst mal diesen Rake-Task lesen sollen, um genau zu verstehen, was er tut, LOL):

rake user_actions:rebuild

Bisher habe ich ehrlich gesagt noch nicht herausgefunden, was genau im import_likes-Migrations-Skript schiefgeht. Wenn ich genau wüsste, wo und was das Problem ist, hätte ich es bereits behoben (ich verbringe oft Stunden oder Tage damit, ein Problem zu finden, und nachdem ich es gefunden habe, dauert die Reparatur nur eine Minute … das ist die Essenz des Programmierens, LOL). Ich habe mehrmals aus einem Snapshot wiederhergestellt und die import_likes-Routine auf verschiedene Arten erneut ausgeführt (zusätzliche puts-Anweisungen usw.) und die Tabellen überprüft. Die Ergebnisse waren jedoch nicht eindeutig. Das wird durch meine Noobigkeit in Ruby und Discourse im Allgemeinen noch verschlimmert, da ich im Backend noch nicht fließend bin. (Allerdings werde ich immer besser in begin ... rescue ... end … haha, was sich zu einem meiner neuen Debugging-Werkzeuge als Rubynube entwickelt hat).

Was ich festgestellt habe, ist, dass die temporäre PostgreSQL-Tabelle like_data (auf der Discourse-Seite) in Ordnung ist, alle Daten im richtigen Format enthält und die Einträge sowohl mit der MySQL-Migrationstabelle als auch mit der vB-Seite übereinstimmen.

Der Prozess scheint beim Erstellen von user_actions und möglicherweise sogar post_actions zu scheitern, da meine Tests gezeigt haben, dass die Daten nicht ordnungsgemäß in diese wichtigen Tabellen übertragen werden.

Bitte beachten Sie: Die Kernmigration von vB3 ist in Ordnung. Dieses Problem betrifft ein altes vB3-„Danke“-Plugin, das ich in Discourse-Likes umwandle. Mein nächster Schritt, wenn ich heute später Zeit habe, wird sein, mich hinzusetzen und genau herauszufinden, wo der Prozess beim Übertragen von der korrekten like_data-Tabelle zu user_actions und post_actions hakt.

Meine vorläufige Schlussfolgerung basierend auf den Tests von gestern ist, dass Ruby Raking nicht helfen wird, da das Problem beim Aktualisieren der user_actions- oder post_actions-Tabelle liegt. Daher muss ich genau herausfinden, wo und warum der Fehler auftritt. Es könnte so einfach sein wie ein DB-Typen-Mismatch oder ein anderes kleines Code-Gremlin.

Unsere Discourse-Seite ist noch nicht live, also ist es keine Notfallsituation. Wie viele andere hier und anderswo habe ich auch andere Aufgaben wie das Erledigen von Behördenangelegenheiten oder Bankgeschäften, die mehr als ein wenig lästig sind, und ich muss heute wieder in die Stadt, um einige nicht-Discourse-Aufgaben zu erledigen. Ich würde es lieber nutzen, um Discourse zu erkunden und nach Code-Gremlins zu suchen.

Ich habe das Migrations-Skript erneut ausgeführt (ohne Änderungen am Skript), einschließlich des benutzerdefinierten Skripts zur Umwandlung von vb3 thanks in Discourse likes (import_likes), und es scheint jetzt in Ordnung zu sein.

Ich werde versuchen, die große „D

5,6 Tsd. Likes vergeben… Das ist viel Liebe :heart:

Nachdem alle vb thanks in discourse likes umgewandelt wurden, hier ein Beispiel für einen migrierten Themenbeitrag aus dem Jahr 2000, also vor zwanzig Jahren, der die migrierten „Likes“ im Thema zeigt:

… und ich freue mich schon darauf, zu lernen, wie man coole Plugins schreibt… :slight_smile:

Ich bin sehr zufrieden mit Discourse und dem Team… und besonders mit begin .... rescue ...puts "look at me".... end in Ruby… was für ein Lebensretter!

Es stimmt… alte Hunde können neue Tricks lernen, wenn man ihnen ein paar Knochen wirft :slight_smile:

Vielen Dank, TEAM Discourse! Vor 20 Jahren haben wir ein Forum für Unix- und Linux-Nutzer auf vB2 gegründet, und vor etwa 15 Jahren haben wir auf vB3 „upgegradet“. Heute ist ein großer Schritt für Unix- und Linux-Nutzer weltweit – und für uns, da die Migration zu Discourse jetzt live geschaltet ist.

Vielen Dank, dass Sie diese Software entwickelt und als Open-Source-Projekt für alle verfügbar gemacht haben. Ihre Großzügigkeit wird sehr geschätzt. Meiner Meinung nach (und ich bin mir sicher, dass unzählige andere dem zustimmen) ist Discourse 2020 bei weitem die beste Forensoftware auf dem Planeten.

Für andere, die noch Legacy-vB3-Nutzer sind und zu Discourse migrieren möchten: Diese Migration ist nicht so „einfach“, wie es auf den ersten Blick scheint. Wenn Sie nicht gut in der Programmierung bewandert sind und sich nicht wohlfühlen, wenn es darum geht, direkt über die Kommandozeile mit Ihrer Datenbank zu interagieren, empfehle ich Ihnen, die Dienste einiger der talentierten und aktiven Fachleute hier auf meta.discourse.org in Anspruch zu nehmen.

Nochmals vielen Dank, Team Discourse!

Hinweis: Ich werde in diesem Beitrag auf der neuen Seite einige zusätzliche Erkenntnisse hinzufügen: