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.
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.
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…
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?
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…
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.
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?
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.
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
Danke @gerhard für den Tipp, ich werde tiefer graben…
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.
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.
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…
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?
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.