Ein phpBB3-Forum zu Discourse migrieren

Das ist alles ziemlich typisch.

Ich denke, dass die von Ihnen vorgeschlagenen Änderungen wahrscheinlich keine anderen Importe beeinträchtigen werden. Oft gibt es eine Reihe von Änderungen wie diese und dann eine Reihe anderer Änderungen, die spezifisch für den Import sind, und herauszufinden, welche welche sind und erneut nur mit diesen zu testen, wäre viel Arbeit, sodass kein PR erstellt wird.

Ich bin froh, dass Sie es geschafft haben!

3 „Gefällt mir“

Danke Constanza, sehr hilfreicher Link. :+1:


Danke für die Informationen Jay. Ich werde später eine PR machen, nachdem ich mit der Migration fertig bin, wenn das helfen kann, ein noch besseres phpBB3-Migrationstool zu haben.
Das aktuelle Skript ignoriert auch [size=XXX] Tags, auf die ich bei anderen Migrationen gestoßen bin.
Bei meiner aktuellen Migration habe ich ein kleines Skript in meinem Importer erstellt und den Wert von XXX verwendet, um diese Tags durch <small>content</small> und <big>content</big> zu ersetzen, da diese von Discourse unterstützt werden.
Aber das war ein persönlicher Wunsch und es könnte eine ordnungsgemäßere Lösung sein (im Allgemeinen), diese [size] Tags einfach zu entfernen, so wie es das Importskript bereits mit den [color] Tags tut.

4 „Gefällt mir“

Danke @Canapin für all dein Feedback. Ein PR ist definitiv willkommen!

Außerdem ein kleiner Teaser: Wir arbeiten an einer Lösung, die alle Importe – nicht nur phpBB – viel besser, schneller, einfacher anzupassen machen und diese lästigen Probleme mit der BBCode-Konvertierung beseitigen sollte… :wink:

4 „Gefällt mir“

Beim Importieren meiner Beiträge sind eine Reihe von Fehlern aufgetreten (nicht bei allen Beiträgen):

   251491 / 251672 ( 99.9%)  [14140 items/min]  Ausnahme beim Erstellen des Beitrags 354629. Überspringe.
undefined method `[]' for nil:NilClass
/var/www/discourse/script/import_scripts/phpbb3/importers/post_importer.rb:66:in `block in map_first_post'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/core_ext/object/try.rb:15:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.1/lib/active_support/core_ext/object/try.rb:15:in `try'
/var/www/discourse/script/import_scripts/base.rb:576:in `create_post'
/var/www/discourse/script/import_scripts/base.rb:523:in `block in create_posts'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/mysql2/alias_method.rb:8:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.3/lib/patches/db/mysql2/alias_method.rb:8:in `each'
/var/www/discourse/script/import_scripts/base.rb:510:in `create_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:192:in `block in import_posts'
/var/www/discourse/script/import_scripts/base.rb:874:in `block in batches'
/var/www/discourse/script/import_scripts/base.rb:873:in `loop'
/var/www/discourse/script/import_scripts/base.rb:873:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:254:in `batches'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:188:in `import_posts'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:38:in `execute'
/var/www/discourse/script/import_scripts/base.rb:47:in `perform'
/var/www/discourse/script/import_scripts/phpbb3/importer.rb:22:in `perform'
script/import_scripts/phpbb3.rb:33:in `<module:PhpBB3>'
script/import_scripts/phpbb3.rb:14:in `<module:ImportScripts>'
script/import_scripts/phpbb3.rb:13:in `<main>'

Aber ich konnte nicht herausfinden, was das verursacht.

Irgendwelche Hinweise?

Wie kann ich überprüfen, ob tatsächlich Beiträge fehlen? Ich konnte nicht herausfinden, wie ich die Daten (z. B. den Beitragsinhalt) ausgeben kann, die zu „Ausnahme beim Erstellen des Beitrags 354629“ gehören.

Ich kann mich nicht erinnern, diesen Fehler bei meinen anderen Importtests in den letzten Tagen gehabt zu haben, aber vielleicht habe ich einfach nicht darauf geachtet… Könnte es mit diesem bekannten Problem zusammenhängen?

251490 / 251672 ( 99.9%)  [14140 items/min]  Übergeordneter Beitrag 337703 existiert nicht. Überspringe 354628: vw-camper est malade !?

Ich habe das Import-Skript zweimal ausgeführt, wie es sich für dieses spezielle Problem gehört.

1 „Gefällt mir“

Stellen Sie sicher, dass Sie tag_mappings: {} in Ihrer settings.yml-Datei festlegen, wenn Sie diese Funktion nicht verwenden.

3 „Gefällt mir“

Ich fühle mich dumm! Ich habe sogar darüber nachgedacht, aber ich war mir so sicher, dass ich diesen Fehler noch nie zuvor erlebt hatte, dass ich es nicht versucht habe… :facepalm:

Es hat das Problem gelöst, vielen Dank.


Ich nehme an, Sie können zu diesem Zeitpunkt nicht viel sagen, aber gibt es einen Hinweis darauf, wie es funktionieren wird und wann einige verwendbare Import-Skripte mit dieser neuen Sache verwendet werden können?
Ich werde dieses Jahr vielleicht noch ein phpBB migrieren, daher könnte es für mich sehr interessant sein, etwas mehr zu erfahren. :slight_smile:

1 „Gefällt mir“

Hallo, ich teste eine Migration von phpbb 3.2 nach Discourse für ein ziemlich großes Forum (30.000 Themen / 600.000 Beiträge) und fast alles funktioniert gut, bis auf ein paar nicht importierte Themen („Übergeordneter Beitrag xx existiert nicht“), die auch nach mehreren Versuchen nicht behoben sind, aber das ist kein Problem.
Mein Hauptproblem ist, dass nachfolgende Importe mit frischen Daten (verifiziert mit dem sha256sum in import/mysql/imported file) keine neuen Beiträge in Discourse importieren. Ich stoße früh im Prozess auf eine Ausnahme, weiß aber nicht, ob sie damit zusammenhängt:

Fehler beim Zuordnen des Beitrags mit ID 6815

BIGINT UNSIGNED Wert ist außerhalb des Bereichs in '(`phpbb_prod`.`o`.`poll_option_total` - (select count(distinct `phpbb_prod`.`v`.`vote_user_id`) from `phpbb_prod`.`phpbb3_poll_votes` `v` join `phpbb_prod`.`phpbb3_users` `u` join `phpbb_prod`.`phpbb3_topics` `t` where ((`phpbb_prod`.`u`.`user_id` = `phpbb_prod`.`v`.`vote_user_id`) and (`phpbb_prod`.`v`.`topic_id` = `phpbb_prod`.`t`.`topic_id`) and (`phpbb_prod`.`v`.`poll_option_id` = `phpbb_prod`.`o`.`poll_option_id`) and (`phpbb_prod`.`t`.`topic_id` = `phpbb_prod

Ist das ein Problem mit eingebetteten Umfragen in Beiträgen, basierend auf der angezeigten SQL-Abfrage?

Schönen Tag noch!

2 „Gefällt mir“

Ich kann noch nicht viel sagen, da es sich noch in der Entwicklung befindet. Pläne können sich ändern … Aber „dieses Jahr“ ist eine gute Vermutung. :wink:

2 „Gefällt mir“

BIGINT UNSIGNED Wert ist außerhalb des Bereichs

Hmm, gibt es so viele anonyme Stimmen in dieser Umfrage?

Sie müssen mit dieser SQL herumspielen:

Vielleicht so etwas? https://stackoverflow.com/a/11704174/451338
Bitte lassen Sie mich wissen, wenn Sie eine Lösung gefunden haben oder erstellen Sie einen PR mit einer Korrektur. Ich würde es zu schätzen wissen.

3 „Gefällt mir“

Umfragen gibt es seit Beginn des Forums, ich war zu dieser Zeit nicht verantwortlich, aber ich glaube, anonyme Benutzer durften nie Umfragen posten/beantworten

Mit

 SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

kann ich alle Umfragestimmen abfragen, und für 2 davon habe ich negative „anonymous_votes“. Es scheint, dass dieses Forum tatsächlich anonymes Abstimmen erlaubt hat :slight_smile:

Danke @gerhard für den Tipp, ich werde tiefer graben…

4 „Gefällt mir“

Ich untersuche derzeit die Migration eines phpBB-Forums zu Discourse. Das Problem ist, dass unser phpBB Postgres anstelle von MySQL verwendet. Daher möchte ich das Skript so anpassen, dass es auch damit funktioniert.

Könnte mir jemand einige Hinweise geben, wie ich am besten vorgehen kann? Idealerweise möchte ich, dass alle von dieser Arbeit profitieren. Daher möchte ich, dass ein von der Community akzeptierter Ansatz verwendet wird, anstatt nur schnell und schmutzig daran zu arbeiten.

Soweit ich das beurteilen kann, scheint es hauptsächlich darum zu gehen, die richtigen SQL-Anweisungen für das PostgreSQL-Schema mit dem richtigen DB-Adapter hinzuzufügen. Ich bin mir jedoch nicht sicher, wie die gesamte Orchestrierung für den Docker-Container angepasst werden muss, um ordnungsgemäß eine PostgreSQL-Instanz zu starten, falls dies vom in der Konfiguration angegebenen DB-Typ benötigt wird, um den DB-Dump zu importieren und die Anweisungen dagegen auszuführen.

2 „Gefällt mir“

Es gibt ein Massenimport-Skript für phpBB, das auf PostgreSQL läuft. Hast du es gesehen? discourse/script/bulk_import/phpbb_postgresql.rb at main · discourse/discourse · GitHub

Ich glaube jedoch nicht, dass es in letzter Zeit verwendet wurde, daher ist es wahrscheinlich kaputt und funktioniert möglicherweise nicht mit aktuellen phpBB-Versionen, da sich das Markdown-Speicherformat geändert hat.

:+1:

Welchen Weg du auch wählst, ich würde nicht zu viel Zeit damit verbringen, deine Lösung zu vergolden, es sei denn, du möchtest es wirklich. Die aktuellen Import-Skripte werden irgendwann in diesem Jahr veraltet sein…

2 „Gefällt mir“

Danke, das war mir nicht bewusst! Und danke für den Hinweis, dass die Skripte veraltet sein werden. Es lohnt sich also wahrscheinlich nicht, ein so wichtiges Feature dafür nach oben zu verlagern, wenn sie ohnehin bald veraltet sein werden? Ist ein Ersatz dafür geplant?

1 „Gefällt mir“

Ja, natürlich wird es einen Ersatz geben.

3 „Gefällt mir“

Eine weitere wichtige Sache, die ich mich gefragt habe: Muss ich außer disable_edit_notifications noch etwas einstellen, um sicherzustellen, dass keine der importierten Benutzer von Discourse wegen etwas, das ich importiere, per E-Mail benachrichtigt werden? Da die Instanz derzeit nicht öffentlich ist und wir nur mit dem Import experimentieren und wahrscheinlich mehrere Versuche benötigen, bis er gut genug ist, möchte ich vermeiden, dass E-Mails gesendet werden.

1 „Gefällt mir“

Sie suchen nach der Website-Einstellung disable_emails

4 „Gefällt mir“

Während [b]Text[/b] in Discourse inline unterstützt wird, wird es nicht für Textblöcke mit Zeilenumbrüchen interpretiert.

[b]Zum Beispiel, wenn ich diesen Text in meinem Beitrag habe…

Und ich setze meine Zeile nach einer Leerzeile fort, schließe ich den bbcode und der Text wird nicht in fetten Text umgewandelt[/b]

Dasselbe gilt für [i] und wahrscheinlich andere Tags.

Ich kann keine saubere Lösung dafür in meinem Import finden. Irgendwelche Ideen? :man_shrugging:

2 „Gefällt mir“

Dies ist keine ideale Lösung, aber ich habe eine Idee für einen Plan B oder C zumindest.

Nach dem Import könnten Sie [b] auf \u003cb\u003e und [/b] auf \u003c/b\u003e abbilden, da \u003cb\u003e hier auf Block funktioniert

\u003cb\u003etest
\ntest\u003c/b\u003e

\u003cb\u003etest
\ntest\u003c/b\u003e

Aber auf einem großen Forum wird das eine Weile dauern :confused:

3 „Gefällt mir“

Gute Idee!

Mein Forum ist noch nicht importiert, daher kann ich noch am Importer arbeiten.

Wäre es nicht sinnvoller, <strong> und <em> zu verwenden, ungeachtet ihrer semantischen “Eigenschaft”?

2 „Gefällt mir“

Das sind großartige Neuigkeiten!

Ich denke, das ist eine gute Sache, die man zuerst versuchen kann.

2 „Gefällt mir“