Penso che le modifiche che suggerisci probabilmente non danneggeranno altre importazioni. Spesso ci sono una serie di modifiche come queste e poi un sacco di altre modifiche specifiche per l’importazione e capire quali sono quali e testare di nuovo solo con quelle richiederebbe molto lavoro, quindi non viene creato un PR.
Grazie per le informazioni Jay. Farò una PR più tardi, dopo aver finito la migrazione, se può aiutare ad avere uno strumento di migrazione phpBB3 ancora migliore.
Lo script attuale ignora anche i tag [size=XXX che ho incontrato durante altre migrazioni.
Nella mia migrazione attuale, ho creato un piccolo script nel mio importer e ho usato il valore di XXX per sostituire questi tag con \u003csmall\u003econtenuto\u003c/small\u003e e \u003cbig\u003econtenuto\u003c/big\u003e poiché sono supportati da Discourse.
Ma questo era un desiderio personale e potrebbe essere una soluzione più appropriata (in generale) semplicemente eliminare questi tag [size, come lo script di importazione fa già con i tag [color].
Grazie @Canapin per tutti i tuoi feedback. Una PR è sicuramente benvenuta!
Inoltre, un piccolo anticipo: stiamo lavorando a una soluzione che dovrebbe rendere tutte le importazioni, non solo phpBB, molto migliori, più veloci, più facili da personalizzare e liberarci di quei fastidiosi problemi con la conversione del BBCode…
Durante l’importazione dei miei post, ho riscontrato una serie di questi errori (non per tutti i post):
251491 / 251672 ( 99.9%) [14140 elementi/min] Eccezione durante la creazione del post 354629. Salto.
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>'
Ma non sono riuscito a capire cosa causi questo.
Qualche idea?
Come posso verificare se ho effettivamente post mancanti? Non sono riuscito a trovare come visualizzare i dati (contenuto del post, ad esempio) corrispondenti a “Eccezione durante la creazione del post 354629”.
Non ricordo di aver riscontrato questo errore nei miei altri test di importazione dei giorni precedenti, ma forse non ci ho prestato attenzione… Potrebbe essere correlato a questo problema noto?
251490 / 251672 ( 99.9%) [14140 elementi/min] Il post padre 337703 non esiste. Salto 354628: vw-camper est malade !?
Ho eseguito lo script di importazione due volte, come dovrebbe essere, riguardo a questo specifico problema.
Mi sento stupido! Ci ho anche pensato, ma ero così sicuro di non aver mai riscontrato questo errore prima che non ci ho provato…
Ha risolto il problema, grazie mille.
Suppongo che tu non possa dire molto al momento, ma hai qualche indizio su come funzionerà e quando alcuni script di importazione utilizzabili potranno essere usati con questa nuova cosa?
Potrei migrare un altro phpBB quest’anno, quindi potrebbe essere molto interessante per me saperne un po’ di più.
Ciao, sto testando la migrazione da phpbb 3.2 a discourse per un forum di dimensioni discrete (30k argomenti / 600k post) e quasi tutto funziona bene, a parte un paio di argomenti non importati (“Il post padre xx non esiste”), non risolti con esecuzioni multiple, ma non è un problema.
Il mio problema principale è che le importazioni successive con dati freschi (verificati con sha256sum nel file import/mysql/imported) non importano nuovi post in Discourse. Sto affrontando un’eccezione all’inizio del processo, non so se è collegata:
Impossibile associare il post con ID 6815
Il valore BIGINT UNSIGNED è fuori intervallo 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
È un problema con i sondaggi incorporati nei post, dall’SQL visualizzato?
I sondaggi risalgono all’inizio del forum, non ero responsabile in quel momento, ma penso che agli utenti anonimi non sia mai stato permesso di pubblicare/rispondere ai sondaggi
Con
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
Sono in grado di interrogare tutti i voti dei sondaggi e per 2 di essi ho “voti_anonimi” negativi. Sembra che questo forum abbia in qualche modo permesso il voto anonimo, in realtà
Grazie @gerhard per il suggerimento, approfondirò…
Sto attualmente esaminando la migrazione di un forum phpBB a Discourse. Il problema è che il nostro phpBB utilizza Postgres invece di MySQL, quindi vorrei adattare lo script per funzionare anche con quello.
Qualcuno potrebbe darmi qualche dritta sul modo migliore per procedere? Idealmente, vorrei che tutti potessero beneficiare di questo lavoro, quindi vorrei che utilizzasse un approccio accettato a monte invece di limitarsi a un rapido e sporco adattamento per farlo funzionare.
Da quello che posso capire, sembra trattarsi principalmente di aggiungere le corrette istruzioni SQL per lo schema PostgreSQL utilizzando il giusto adattatore DB, tuttavia non sono sicuro di come l’intera orchestrazione per il container Docker debba essere adattata per avviare correttamente un’istanza PostgreSQL, se necessaria dal tipo di DB specificato nella configurazione, in cui importare il dump del DB ed eseguire le istruzioni.
Tuttavia, non credo che sia stato utilizzato di recente, quindi è probabilmente rotto e potrebbe non funzionare con le versioni attuali di phpBB perché il formato di archiviazione Markdown è cambiato.
Qualunque strada tu scelga, non passerei troppo tempo a perfezionare la tua soluzione a meno che tu non lo voglia davvero. Gli attuali script di importazione saranno deprecati entro quest’anno…
Grazie, non ne ero a conoscenza! E grazie per l’avviso che gli script verranno deprecati, quindi immagino che non valga la pena integrare una funzionalità così importante per quelli se verranno comunque deprecati a breve? È prevista una sostituzione per essi?
Un’altra cosa importante che mi stavo chiedendo, devo impostare qualcos’altro oltre a disable_edit_notifications per assicurarmi che nessuno degli utenti importati venga contattato via email da Discourse per qualsiasi cosa io importi? Poiché attualmente l’istanza non è pubblica e stiamo solo sperimentando l’importazione e probabilmente avremo bisogno di diversi tentativi finché non sarà abbastanza buona, voglio evitare che vengano inviate email.