Demande d'amélioration pour le script d'importation phpBB3

J’ai aussi essayé ceci :

root@vps116136-import:/var/www/discourse/config# su discourse -c “bundle exec rake db:drop”
exec: line 1: “bundle: commande introuvable”

Désolé, j’aurais dû anticiper ces vérifications.

Essayez d’exécuter la commande drop avec cette variable d’environnement :

cd /var/discourse
./launcher enter <votre-nom-de-conteneur>

su discourse
DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop

Celui-ci n’a pas fonctionné parce que vous n’étiez pas dans le répertoire où se trouve le Gemfile du projet, dans votre cas : /var/www/discourse.

Une note rapide : la manière la plus simple aurait été d’avoir une sauvegarde dès le tout premier démarrage du forum, vous n’auriez alors qu’à la restaurer avant d’essayer d’importer à nouveau, mais en supposant que vous n’en aviez pas, il nous restait cette réinitialisation logicielle.

2 « J'aime »

Toujours rien.

root@vps116136-import:/var/www/discourse# su discourse
discourse@vps116136-import:/var/www/discourse$ DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop
PG::InsufficientPrivilege: ERROR:  must be owner of database discourse
Couldn’t drop database ‘discourse’
rake aborted!
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR:  must be owner of database discourse (ActiveRecord::StatementInvalid)

…

J’essaie maintenant en tant que root…

1 « J'aime »

Non.

root@vps116136-import:/var/www/discourse# DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop
fatal: ownership douteuse détectée dans le dépôt à ‘/var/www/discourse’
Pour ajouter une exception pour ce répertoire, appelez :

    git config --global --add safe.directory /var/www/discourse

rake avorté!

Oubliez mes premières instructions :smiling_face_with_tear:

  1. Utilisez docker cp pour copier votre dernière sauvegarde hors du conteneur. Les sauvegardes se trouvent dans /shared/backups/default.
  2. Supprimez le dossier partagé de votre répertoire d’installation (l’endroit où vous exécutez ./launcher) : rm -rf /var/discourse/shared
  3. Reconstruisez le conteneur en utilisant ./launcher rebuild <nom-du-conteneur>.

Cela devrait fonctionner, mais faites attention à ne pas perdre votre sauvegarde. J’essayais d’éviter de le suggérer pour que vous ne supprimiez pas accidentellement votre sauvegarde, mais cela semble être la seule voie à suivre.

1 « J'aime »

Ça va prendre un certain temps. Le fichier tar.gz fait 15 Go.

1 « J'aime »

En fait, ça va prendre…

200

C’est fait .5GB depuis que j’ai commencé.

1 « J'aime »

Terminé.

Fait.

Terminé. Prêt à exécuter le script d’importation, mais…

/var/discourse/shared/standalone/import
├── data
├── mysql
└── settings.yml

J’ai fait ça :index_pointing_up: en l’air, n’est-ce pas.

1 « J'aime »

Oui.

Je suppose que vous avez créé un volume pour votre conteneur mysql à l’intérieur du dossier partagé. Si oui, malheureusement, vous devrez redémarrer le conteneur et restaurer la base de données à nouveau.
Vous pouvez simplement copier les pièces jointes.
Le fichier settings.yml ne devrait pas être si difficile à reconfigurer.

Je ne suis pas sûr de ce que signifie redémarrer un conteneur. La première fois, j’ai placé phpbb_mysql.sql dans le répertoire mysql selon ces instructions. Y a-t-il plus à faire que cela ?

Les pièces jointes, vous pouvez simplement les copier.

Oui. Sauf que le tar.gz fait 15 Go parce qu’il y a 45 Go de données dans le répertoire phpBB /files. J’utilise mon forum depuis 22 ans, vous savez ! Donc oui, je vais les copier à nouveau. Mais probablement, ce sera demain avant que je ne m’en occupe à nouveau.

1 « J'aime »

Oui, c’est la nature des migrations communautaires. Un bon conseil serait de commencer par un échantillon plus petit et une fois que vous maîtrisez le processus, vous pouvez effectuer une importation complète.

Des efforts sont en cours pour rendre les outils plus flexibles et le processus moins redondant, mais c’est un sujet très complexe.

J’espère que tout se passera bien lors de votre tentative demain.

1 « J'aime »

D’accord ! Mais phpBB ne facilite pas la réduction de la taille de l’échantillon. Je suis un peu coincé avec ce que j’ai. Cependant, c’était un environnement de test, et rien n’est irrécupérable.

Merci ! Je vous tiendrai au courant ici. Au fait, maintenant que je suis un expert en docker cp :zany_face: , serait-ce un gros problème de modifier le script ruby pour afficher l’post_id de phpBB lorsque quelque chose comme ceci se produit ?

8000 / 24451 ( 32.7%) [677 items/min] W, [2026-01-13T02:50:22.466363 #25640] WARN – : Bad date/time value “0000:00:00 00:00:00”: mon out of range
W, [2026-01-13T02:50:22.466500 #25640] WARN – : Bad date/time value “0000:00:00 00:00:00”: mon out of range
W, [2026-01-13T02:50:22.466600 #25640] WARN – : Bad date/time value “0000:00:00 00:00:00”: mon out of range

1 « J'aime »

Je suis toujours là ! Je nettoie quelques trucs avant de refaire l’importation et je règle quelques problèmes. J’attends que Claude me donne un signe avant de passer au suivant. Mais je reviendrai…

disperse-lesley-nielsen

1 « J'aime »

OK ! J’ai trié mon dernier instantané sans l’aide de Claude et j’ai commencé l’importation. Encore un accroc :

L’importation phpBB3 commence…

/var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:49:in initialize': undefined method ’ for nil (NoMethodError)

  @site_name = import_settings["site_name"]
                              ^^^^^^^^^^^^^
    from /var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:11:in `new'
    from /var/www/discourse/script/import_scripts/phpbb3/support/settings.rb:11:in `load'
    from script/import_scripts/phpbb3.rb:20:in `<module:PhpBB3>'
    from script/import_scripts/phpbb3.rb:16:in `<module:ImportScripts>'
    from script/import_scripts/phpbb3.rb:15:in `<main>'
1 « J'aime »

NVM, mes excuses. Le fichier settings.yml est foutu. Désolé, je reviendrai probablement là-dessus demain.

2 « J'aime »

Vous pourriez jouer avec le débogage pry, vous pouvez ajouter des points d’arrêt dans le code pour ouvrir pry lorsqu’ils sont exécutés. Cela vous permet d’obtenir une interface de ligne de commande interactive pour examiner les données. Ou ajoutez simplement un puts row[:post_id] dans la méthode process_post, afin que lorsque l’avertissement est donné, vous puissiez voir le dernier id.

3 « J'aime »

Oui - ça ! Simple pour vous, pas tellement pour moi :zany_face: J’ai beaucoup utilisé Xdebug pour le débogage côté serveur de PHP pendant que je développais mes hacks, mais j’en suis officiellement au stade du « vieux chien et des nouvelles astuces » de ma vie. Si vous pouvez me fournir la référence exacte, je serais ravi de faire cette modification - mais je ne vais pas prétendre pouvoir hacker ruby. Pas encore, en tout cas…

P.S. Claude m’accordera une audience dans 28 minutes, j’espère pouvoir lancer l’importation une fois que j’aurai surmonté mon obstacle actuel.

OK, le script d’importation s’exécute avec les fichiers .rb révisés. Je vous ferai un rapport (bâillement) demain matin.

2 « J'aime »

Oh-oh. Voici ce que je vois dans une publication avec beaucoup de photos :

Avant que le MBC ne puisse être installé, le passe-fil de la tige de poussée du maître-cylindre d’origine doit être installé. Le passe-fil livré avec le kit est trop petit. Retirer le réservoir de pression d’air de l’unité PS donne un accès libre pour placer les nouvelles conduites de frein.

~~\[attachment=13\]51.jpg\[/attachment\]\[attachment=12\]52.jpg\[/attachment\]\[attachment=11\]53.jpg\[/attachment\]\[attachment=10\]54.jpg\[/attachment\]\[attachment=9\]55.jpg\[/attachment\]\[attachment=8\]56.jpg\[/attachment\]\[attachment=7\]57.jpg\[/attachment\]\[attachment=6\]58.jpg\[/attachment\]\[attachment=5\]59.jpg\[/attachment\]\[attachment=4\]60.jpg\[/attachment\]\[attachment=3\]61.jpg\[/attachment\]\[attachment=2\]62.jpg\[/attachment\]\[attachment=1\]63.jpg\[/attachment\]\[attachment=0\]~~64.jpg\[/attachment\]

Voici à quoi ressemblait cette publication dans phpBB :

J’ai d’une manière ou d’une autre gâché mon instance Docker pour mon environnement de test. Je suis en train de la réinitialiser.

Au lieu de modifier le script d’importation, je vais prendre un instantané et effectuer un post-traitement avec un script qui extraira les attach_ids, les noms de fichiers et les commentaires, et tentera de les ajouter comme légendes aux images (avec un peu d’aide de Claude). Je ne suis pas trop optimiste, mais je ferai savoir aux gens comment cela se passe.

Concernant ces avertissements sur les mauvaises valeurs de date/heure, voici ce que Claude a dit :

L’avertissement provient de la gemme EXIFR, qui lit les données EXIF à partir des fichiers image (vos pièces jointes). Il ne s’agit pas du tout des dates de publication, mais des métadonnées dans les fichiers image eux-mêmes.

L’avertissement apparaît lors du traitement des pièces jointes avec des métadonnées de date/heure EXIF invalides. C’est cosmétique et n’affectera pas votre importation.

Ce qui est comme vous le pensiez, @pfaffman. Mais je suis content de savoir maintenant ce qui déclenche l’avertissement.

2 « J'aime »