J’ai rencontré la même erreur. Je pense qu’elle se produit lorsqu’on dispose d’un fichier shared/standalone/import/mysql/imported obsolète. La suppression de ce fichier a résolu l’erreur.
La migration des mots de passe n’a apparemment pas fonctionné pour moi.
J’ai défini passwords: true dans shared/standalone/import/settings.yml avant d’importer depuis un dump phpBB 3.0. Voici ce que j’ai dans containers/app.yml :
J’ai ensuite exécuté ./launcher rebuild app après l’importation. L’importation semble avoir réussi dans son intégralité, sauf que je ne peux pas me connecter avec mon mot de passe phpBB. Je n’ai pas remarqué de messages d’erreur pertinents lors de l’importation, et le mot de passe fait 20 caractères, ce qui devrait donc dépasser la limite de longueur minimale.
Que devrais-je examiner pour résoudre ce problème ?
Un peu plus d’informations : je vois des entrées import_pass dans la table user_custom_fields de la base de données qui correspondent aux hachages de mots de passe présents dans la base de données phpBB, donc cette partie semble avoir fonctionné ?
Édit : Oh, j’ai compris ce qui s’est passé. J’avais complètement oublié que nous avions basculé vers l’authentification LDAP pour phpBB… Les mots de passe que j’ai importés étaient tout à fait corrects, ils avaient juste 15 ans ! Je dois donc maintenant mettre en place quelque chose pour extraire les hachages de mots de passe depuis LDAP…
Au début, je pensais que cela était dû au fait que la version 3.0.12 de phpBB était trop ancienne, alors j’ai mis à jour phpBB vers la version 3.0.14, vidé les dossiers Discourse et uploads, et réessayé l’importation. Sans succès.
J’ai ensuite passé la version de phpBB à 3.2.0 (après avoir exécuté leur outil de support pour nettoyer la base de données des modules) sur un serveur de test, mais toujours sans succès.
Avant d’approfondir l’investigation sur ma base de données, je voulais m’assurer que le script fonctionne pour tout le monde.
Je ne pense pas avoir fait d’erreur dans mon fichier de configuration, mais un nouvel œil pourrait peut-être aider.
# Ceci est un exemple de fichier de configuration pour l'importateur phpBB3.
database:
type: MySQL # Seul MySQL est actuellement pris en charge
host: localhost
port: 3306
username: root
password:
schema: phpbb
table_prefix: phpbb_ # Modifiez ceci si votre forum utilise un préfixe différent. Généralement, tous les noms de table commencent par phpbb_
batch_size: 1000 # Ne modifiez pas cette valeur sauf si vous savez ce que vous faites. La valeur par défaut (1000) devrait fonctionner correctement.
import:
# Définissez ceci si vous importez plusieurs forums phpBB vers un seul forum Discourse.
#
# Par exemple, lors de l'importation de plusieurs sites, préfixez tous les IDs importés
# avec 'first' pour éviter les conflits. Les exécutions d'importation suivantes doivent avoir un
# 'site_name' différent.
#
# site_name: first
#
site_name:
# Créer de nouvelles catégories
#
# Par exemple, pour créer une catégorie parente et une sous-catégorie.
#
# new_categories:
# - forum_id: foo
# name: Catégorie Foo
# - forum_id: bar
# name: Catégorie Bar
# parent_id: foo
#
new_categories: []
# Mappages de catégories
#
# Par exemple, les sujets provenant des catégories phpBB 1 et 2 seront importés
# dans la nouvelle catégorie "Catégorie Foo", les sujets de la catégorie phpBB 3
# seront importés dans la sous-catégorie "Catégorie Bar", les sujets de la catégorie phpBB
# 4 seront fusionnés dans la catégorie 5 et la catégorie 6 sera ignorée.
#
# category_mappings:
# 1: foo
# 2: foo
# 3: bar
# 4: 5
# 6: SKIP
#
category_mappings: {}
# Mappages d'étiquettes (tags)
#
# Par exemple, les sujets importés de la catégorie phpBB 1 seront étiquetés
# avec 'first-category', etc.
#
# tag_mappings:
# 1:
# - first-category
# 2:
# - second-category
# 3:
# - third-category
#
tag_mappings:
# Mappage des rangs vers les niveaux de confiance
#
# Associez les niveaux de rang phpBB 3.x aux niveaux de confiance
# Les utilisateurs ayant un rang d'au moins 3000 auront le niveau TL3, etc.
#
# rank_mapping:
# trust_level_1: 200
# trust_level_2: 1000
# trust_level_3: 3000
#
rank_mapping:
# ATTENTION : N'activez pas cette option sauf si vous savez ce que vous faites.
# Cela risque probablement de casser la conversion BBCode vers Markdown et de ralentir votre importation.
use_bbcode_to_md: false
# C'est le chemin vers le répertoire racine de votre installation phpBB actuelle (ou une copie).
# L'importateur s'attend à trouver les répertoires /files et /images dans le répertoire de base.
# Vous devez modifier ceci en quelque chose comme /var/www/phpbb si vous n'utilisez pas l'importateur basé sur Docker.
# Ceci n'est nécessaire que si vous souhaitez importer des avatars, des pièces jointes ou des smileys personnalisés.
phpbb_base_dir: /shared/import/data
site_prefix:
# Ceci est nécessaire pour réécrire les liens internes dans les publications
original: ***.com # sans http(s)://
new: https://****.org # avec http:// ou https://
# Activez ceci si vous souhaitez rediriger les anciens liens du forum vers les nouveaux emplacements.
permalinks:
categories: true # redirige /viewforum.php?f=1 vers /c/nom-de-categorie
topics: true # redirige /viewtopic.php?f=6&t=43 vers /t/nom-du-sujet/81
posts: false # redirige /viewtopic.php?p=2455#p2455 vers /t/nom-du-sujet/81/4
# Ajoutez un préfixe à chaque type de lien, par exemple 'forum' pour rediriger /forum/viewtopic.php?f=6&t=43 vers /t/nom-du-sujet/81
# Laissez vide si votre forum n'était pas installé dans un sous-répertoire.
prefix:
avatars:
uploaded: true # importer les avatars uploadés
gallery: false # importer les avatars prédéfinis proposés par phpBB
remote: false # ATTENTION : Cela peut considérablement ralentir votre importation. Il tentera de télécharger les avatars distants.
# Lorsque true : les utilisateurs anonymes sont importés comme utilisateurs suspendus. Ils ne peuvent pas se connecter et n'ont pas d'adresse e-mail.
# Lorsque false : l'utilisateur système sera utilisé pour tous les utilisateurs anonymes.
anonymous_users: true
# Activez ceci si vous souhaitez importer les hachages de mots de passe afin d'utiliser le plugin "migratepassword".
# Cela permettra aux utilisateurs de se connecter avec leur mot de passe actuel.
# Le plugin est disponible à l'adresse : https://github.com/discoursehosting/discourse-migratepassword
passwords: false
# Par défaut, tout ce qui suit est importé. Vous pouvez les désactiver en les définissant sur false.
bookmarks: true
attachments: true
private_messages: false
polls: false
# Lorsque true : chaque utilisateur importé aura son nom d'utilisateur original de phpBB comme nom
# Lorsque false : le nom de chaque utilisateur importé sera vide sauf si le nom d'utilisateur a été modifié lors de l'importation
username_as_name: false
# Mapper les émojis aux smileys utilisés dans phpBB. La plupart des smileys par défaut ont déjà un mappage, mais vous pouvez les remplacer
# ici si vous n'aimez pas certains d'entre eux.
# La syntaxe de mappage est : nom_emoji: 'smiley_dans_phpbb'
# Ou mapper plusieurs smileys vers un seul émoji : nom_emoji: ['smiley1', 'smiley2']
emojis:
# voici deux exemples de mappages...
smiley: [':D', ':-D', ':grin:']
heart: ':love:'
Je présume que cela s’applique également à phpBB, car j’essaie d’importer des sauvegardes allant de la version 3.2.x à la 3.3.3, mais les milliers de messages parents manquants persistent. Même après plusieurs exécutions et plusieurs sauvegardes de versions séquentielles. Pour simplifier le débogage, le script pourrait afficher l’URL du message avec son identifiant vers l’ancien forum afin de permettre des vérifications de référence. (… viewtopic.php?p=57912)
En fait, puisque nous y sommes, pourquoi ne pas consigner toutes les lignes d’importation échouées, avec leurs messages d’erreur, dans un fichier de vidage à partager pour analyse… juste une idée…
Au moins une fois, il y a un sujet viewtopic.php?f=3&t=1472, mais le premier message viewtopic.php?p=145185 a été supprimé ou retiré, etc., et le premier message du sujet est maintenant viewtopic.php?p=145186, qui est « une réponse ».
Pour plus de clarté, peut-être préciser si le sujet parent n’est tout simplement pas trouvé dans le vidage ou s’il n’a tout simplement pas été importé dans la reconstruction.
J’aimerais tout de même avoir un peu de retour pour savoir si tout le monde a réussi à effectuer une importation complète avec les pièces jointes récemment. Je n’arrive pas à faire fonctionner cela.
Pour l’instant, je ne sais tout simplement pas si le problème vient du script ou de la base de données du forum phpbb
Oui, j’ai revérifié les dossiers et le fichier de configuration. L’étrange, c’est qu’ils sont bien importés dans les dossiers par défaut/originaux, mais pas intégrés dans les publications.
Il s’agissait d’une très ancienne version de phpBB avec certains plugins. J’ai effectué un peu de nettoyage et réussi la mise à niveau de phpBB 3.0.12 vers la dernière version 3.1 ou 3.2. J’ai testé une importation pour chaque version, mais cela n’a pas fonctionné. Le problème pourrait venir de la base de données. C’est pourquoi, si vous parvenez à réussir une importation complète la prochaine fois, ce serait très utile de nous en faire part. S’il s’agit de la base de données phpBB, je ferai des recherches approfondies avec de l’aide ; si c’est le script, je peux attendre. Merci pour votre message !
Je ne me souviens plus de la dernière fois où j’ai effectué une migration vers phpBB3 ; je soupçonne (sans pouvoir le confirmer) que c’est parce que le script fonctionne très bien.
Puisqu’elles sont en cours de transfert vers Discourse, le problème vient probablement de la façon dont elles sont référencées dans les posts sur phpBB. Voyez-vous des erreurs lors de l’exécution ? Cela pourrait donner des indices. Ou peut-être que les plugins ont modifié leur apparence dans les posts et/ou dans la base de données. Vous devrez probablement faire quelques investigations.
J’ai eu quelques « fichiers manquants » et « mauvais horodatage du message ». J’ai rencontré ces mêmes problèmes lors de mes précédentes importations, donc je ne pense pas que ce soit un problème majeur. J’ai également beaucoup d’erreurs « Le message parent n’existe pas » lors de la première exécution, mais cela a déjà été mentionné plus tôt dans ce fil, et une seconde exécution du script corrige cela.
Autrement, le script s’est très bien déroulé, sans aucun problème majeur.
Il y avait un plugin (principalement un fichier .htaccess apparemment, je n’ai pas géré ce forum) pour organiser les fichiers dans des sous-dossiers (par mois et par année), mais je les ai regroupés dans le même dossier et les mises à niveau sur une version propre de phpBB ont fonctionné sans problème. Tous les fichiers importés étaient actifs sur phpBB 3.1 et 3.2.
Je vais creuser un peu plus dans la base de données ; il se peut que j’aie un fichier SQL issu d’une ancienne importation. Je comparerai les tables des pièces jointes et des messages sur mon serveur de test. Peut-être ai-je manqué quelque chose.
Vous avez raison, il y a un bug dans TextProcessor::process_attachments qui empêche les pièces jointes d’être intégrées dans le Markdown du message. J’ai soumis une PR.
Bonjour, j’ai récemment importé environ 35 000 messages. Pendant l’importation, j’ai remarqué de nombreux messages « Parent post XXXXXX doesn’t exist. Skipping ». Une fois le processus terminé, j’ai constaté que sur le forum Discourse, tous les « sujets » étaient présents (je pense), mais sans aucune réponse. En pratique, seul le sujet a été importé, pas les messages (sauf le premier, qui contient le texte du sujet lui-même).
De plus, aucun avatar n’a été importé, même si je les ai placés dans le bon arborescence sous le dossier « import ».
L’ancien forum était en phpBB2, régulièrement importé et visible avec tous ses messages dans phpBB3, mais j’avais supprimé de nombreux anciens messages auparavant ; cependant, tout semble correct dans phpBB3.
Avez-vous des suggestions ? Existe-t-il un script d’importation que je pourrais vérifier ?
Cela dure depuis quelques semaines/mois, mais ne vous inquiétez pas : l’importation sera terminée après avoir à nouveau exécuté la commande import_phpbb3.sh.
J’ai lu le sujet plusieurs fois et j’ai effectué quelques migrations, mais à chaque fois j’ai été confus avec ce plugin et j’ai rencontré des bugs similaires. J’en suis à ma troisième migration et cela m’a rendu fou. Je pense que le fonctionnement de ce plugin peut confondre les utilisateurs qui effectuent des migrations.
Il devrait être précisé quelque part que le plugin doit être activé sur Discourse après le processus de migration. Si c’est déjà écrit quelque part, je l’ai peut-être manqué et peut-être que cette information devrait être mise en évidence.
Notez que le début de l’expression régulière ne suppose pas qu’il y a un caractère : après : <!-- s
Mais elle suppose qu’il y en a un à la fin de l’expression régulière : <!-- s?:
(Je me demande aussi pourquoi il y a un ? qui correspond à 0 ou 1 caractère s à la fin de l’expression régulière, alors qu’il n’y en a pas au début de l’expression régulière)
J’ai supprimé ce : de l’expression régulière et mes deux problèmes de smileys semblent complètement résolus.
Sur mon forum phpbb, beaucoup de smileys commençaient effectivement par un : comme :mrgreen: ou :evil:, mais certains ne commençaient pas, comme 8-) ou ;)
L’ancienne expression régulière entraînait des captures de smileys incorrectes. Par exemple, plusieurs smileys côte à côte étaient capturés comme un seul.
Je ne corrige pas le code directement dans le dépôt Discourse car je n’ai pas l’habitude d’utiliser git, et je ne suis pas non plus sûr que cela aurait un impact sur les importations d’autres versions de phpBB. Je ne veux rien gâcher.
Quoi qu’il en soit, si des personnes rencontrent les mêmes problèmes que moi, voici la solution.
Un autre problème résolu qui pourrait aider les gens dans mon cas lors d’une migration phpBB 3.0.7.
Pour une raison quelconque, le contenu de mes messages de forum phpBB avait parfois plusieurs espaces suivant au début des lignes. Je soupçonne que certains utilisateurs aiment appuyer frénétiquement sur la touche espace sans y prêter attention lorsqu’ils écrivent leur message, et cela n’avait aucune importance puisque la page rendue ignorait ces espaces multiples :
Contenu brut de phpBB :
Salut tous :)
Alors voilà, le combi n'a pas roulé beaucoup ces derniers temps cause CT pas OK :evil: mais il a fait ces 2000 kms sans broncher ;)
Maintenant le CT est OK . Merci L'Atelier Du Raz 8-')
Je dois donc changer le joint-spi au bout de 40 000 kms en 10 ans :roll:
C'est un silicone et j'ai vu qu'il y avait des "doubles lèvres " !?
What's About ?
Je trouve ça un peu limte :evil:
Merci tous, fred
Je l’ai corrigé en ajoutant une regex qui supprime les espaces au début de chaque ligne
text.gsub!(/^[^\\S\\r\\n]+/, "\\n")
J’ai ajouté cela juste avant process_smilies(text) dans ce fichier :
Un autre problème que j’ai rencontré.
Dans ce code (toujours dans text_processor.rb) :
def clean_bbcodes(text)
# Many phpbb bbcode tags have a hash attached to them. Examples:
# [url=https://google.com:1qh1i7ky]click here[/url:1qh1i7ky]
# [quote="cybereality":b0wtlzex]Some text.[/quote:b0wtlzex]
text.gsub!(/:(?:\\w{8})\\]/, ']')
Dans ma base de données, la longueur de ces hashes varie entre 5 et 8 caractères, mais la regex ne supprime que les hashes de 8 caractères exactement. Ainsi, mon importation a conservé des hashes plus courts au lieu de les supprimer.
J’ai corrigé cela en modifiant la regex pour :
text.gsub!(/:(?:\\w{5,8})\\]/, ']')
J’ajoute un problème mineur, toujours dans le même fichier. La regex qui supprime les balises BBCode [color] attend une valeur hexadécimale précédée d’un # obligatoire. Mais [color] accepte aussi des chaînes comme “red”, “blue”, etc., comme valeur. J’ai donc modifié la regex originale :
# remove color tags
text.gsub!(/\\[\\/?color(=#[a-z0-9]*)?\\]/i, "")
En ajoutant un ? après le # pour rendre le # optionnel.
Code corrigé :
# remove color tags
text.gsub!(/\\[\\/?color(=#?[a-z0-9]*)?\\]/i, "")
Je ne sais pas si mes problèmes sont courants dans les importations phpBB, ou s’ils sont très spécifiques à mon cas. Si c’est le cas, j’espère que mes explications ici ne sont pas malvenues ou superflues. Faites-moi savoir si c’est le cas pour que ce ne soit pas gênant.
Edit : Est-il possible de faire en sorte qu’après une migration, tous les sujets existants soient marqués comme “lus” pour chaque utilisateur existant ?
L’objectif est d’éviter qu’après la migration, les utilisateurs existants cliquant sur des sujets existants (et parfois anciens) ne soient redirigés vers le premier message de ces sujets qu’ils avaient déjà lus avant la migration.
Idéalement, les utilisateurs existants cliquant sur des sujets existants ouvriraient non pas le premier, mais le dernier message (depuis la fin de la migration, bien sûr).
C’est un petit problème de confort cependant (et il disparaîtra naturellement après quelques semaines d’utilisation du forum par les utilisateurs), mais on m’a suggéré cela.
J’ai dû faire des ajustements similaires aux expressions régulières pour des migrations antérieures, donc celles-ci seront utiles pour les futures importations phpbb.