Je pense que les changements que vous suggérez ne casseront probablement aucune autre importation. Souvent, il y a un ensemble de changements comme ceux-ci, puis une série d’autres changements spécifiques à l’importation, et déterminer lesquels sont lesquels et tester à nouveau avec seulement ceux-ci demanderait beaucoup de travail, donc une PR n’est pas créée.
Merci pour les informations Jay. Je ferai une PR plus tard après avoir terminé la migration si cela peut aider à avoir un outil de migration phpBB3 encore meilleur.
Le script actuel ignore également les balises [size=XXX que j’ai rencontrées lors d’autres migrations.
Lors de ma migration actuelle, j’ai créé un script rapide dans mon importateur et j’ai utilisé la valeur de XXX pour remplacer ces balises par <small>contenu</small> et <big>contenu</big> car elles sont prises en charge par Discourse.
Mais c’était un souhait personnel et il pourrait y avoir une solution plus appropriée (en général) pour simplement supprimer ces balises [size, comme le script d’importation le fait déjà avec les balises [color].
Merci @Canapin pour tous vos commentaires. Une PR est définitivement la bienvenue !
Aussi, un petit aperçu : Nous travaillons sur une solution qui devrait rendre toutes les importations – pas seulement phpBB – bien meilleures, plus rapides, plus faciles à personnaliser et à se débarrasser de ces problèmes gênants avec la conversion BBCode…
Lors de l’importation de mes publications, j’ai rencontré plusieurs erreurs (pas pour toutes les publications) :
251491 / 251672 ( 99.9%) [14140 éléments/min] Exception lors de la création de la publication 354629. Ignorée.
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>'
Mais je n’ai pas pu comprendre ce qui causait cela.
Des idées ?
Comment puis-je vérifier si j’ai réellement des publications manquantes ? Je n’ai pas trouvé comment afficher les données (contenu des publications par exemple) correspondant à “Exception while creating post 354629”.
Je ne me souviens pas avoir eu cette erreur lors de mes autres tests d’importation les jours précédents, mais peut-être que je n’y ai juste pas prêté attention… Cela pourrait-il être lié à ce problème connu ?
251490 / 251672 ( 99.9%) [14140 éléments/min] La publication parente 337703 n'existe pas. Ignorée 354628 : vw-camper est malade !?
J’ai exécuté le script d’importation deux fois, comme il se doit, concernant ce problème particulier.
Je me sens stupide ! J’y ai même pensé, mais j’étais tellement sûr de ne pas avoir rencontré cette erreur auparavant que je n’ai pas essayé…
Cela a résolu le problème, merci beaucoup.
Je suppose que vous ne pouvez pas en dire beaucoup pour le moment, mais avez-vous une idée de son fonctionnement et quand des scripts d’importation utilisables pourront être utilisés avec cette nouvelle chose ?
Je pourrais migrer un autre phpBB cette année, donc cela pourrait être très intéressant pour moi d’en savoir un peu plus.
Salut, je teste une migration de phpbb 3.2 vers Discourse pour un forum de taille respectable (30k sujets / 600k messages) et presque tout fonctionne bien, à part quelques sujets non importés (“Le message parent xx n’existe pas”), non résolus après plusieurs tentatives, mais ce n’est pas un problème.
Mon problème principal est que les importations ultérieures avec des données fraîches (vérifiées avec le sha256sum dans le fichier import/mysql/imported) n’importent pas les nouveaux messages dans Discourse. Je rencontre une exception tôt dans le processus, je ne sais pas si c’est lié :
Échec du mappage du message avec l'ID 6815
La valeur BIGINT UNSIGNED est hors de portée dans '(`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
Est-ce un problème avec les sondages intégrés dans les messages, d’après le SQL affiché ?
Je ne peux pas en dire beaucoup pour le moment car c’est encore en cours de développement. Les plans peuvent changer… Mais “cette année” est un bon pari.
Quelque chose comme ceci peut-être ? https://stackoverflow.com/a/11704174/451338
Faites-moi savoir quand vous aurez trouvé une solution ou créez une PR avec une correction. J’apprécierais.
Les sondages datent du tout début du forum, je n’étais pas responsable à cette époque, mais je pense que les utilisateurs anonymes n’ont jamais été autorisés à poster/répondre aux sondages.
Avec
SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
Je suis capable d’interroger tous les votes des sondages, et pour 2 d’entre eux, j’ai des « anonymous_votes » négatifs. Il semble que ce forum ait permis le vote anonyme d’une manière ou d’une autre
Merci @gerhard pour le conseil, je vais creuser davantage…
Je suis actuellement en train de migrer un forum phpBB vers Discourse. Le problème est que notre phpBB utilise Postgres au lieu de MySQL, j’aimerais donc adapter le script pour qu’il fonctionne également avec cela.
Quelqu’un pourrait-il me donner quelques pistes sur la meilleure façon de procéder ? Idéalement, j’aimerais que tout le monde bénéficie de ce travail, donc j’aimerais qu’il utilise une approche acceptée en amont au lieu de simplement le pirater rapidement pour qu’il fonctionne.
D’après ce que j’ai pu comprendre, il semble que la principale difficulté réside dans l’ajout des instructions SQL appropriées pour le schéma PostgreSQL en utilisant le bon adaptateur de base de données. Cependant, je ne suis pas sûr de la manière dont l’orchestration de l’ensemble du conteneur Docker doit être adaptée pour lancer correctement une instance PostgreSQL, si nécessaire en fonction du type de base de données spécifié dans la configuration, pour importer le dump de la base de données et exécuter les instructions.
Cependant, je ne pense pas qu’il ait été utilisé récemment, il est donc probablement cassé et pourrait ne pas fonctionner avec les versions actuelles de phpBB car le format de stockage Markdown a changé.
Quelle que soit la voie que vous choisissez, je ne passerais pas trop de temps à peaufiner votre solution, à moins que vous ne le vouliez vraiment. Les scripts d’importation actuels seront dépréciés dans le courant de l’année…
Merci, je n’étais pas au courant ! Et merci pour l’avertissement que les scripts vont être dépréciés, donc je suppose que cela ne vaut peut-être pas la peine d’intégrer une fonctionnalité aussi importante pour ceux-ci s’ils vont de toute façon être bientôt dépréciés ? Y a-t-il un remplacement de prévu pour eux ?
Une autre chose importante que je me demandais, dois-je configurer autre chose que disable_edit_notifications pour m’assurer qu’aucun des utilisateurs importés ne recevra d’e-mails de Discourse pour quoi que ce soit que j’importe ? Comme l’instance n’est actuellement pas publique et que nous expérimentons simplement l’importation et aurons probablement besoin de plusieurs essais jusqu’à ce qu’elle soit suffisamment bonne, je veux éviter que des e-mails ne soient envoyés.