Problème de migration de SMF2 vers Discourse

J’ai suivi les guides et je suis arrivé jusque-là, mais je n’arrive pas à passer cette étape. J’ai même créé un nouvel utilisateur sur le serveur MySQL avec un mot de passe natif et essayé, mais sans succès.

su discourse -c "bundle exec ruby script/import_scripts/smf2.rb /shared/smf2 -t UTC"
Chargement des groupes existants...
Chargement des utilisateurs existants...
Chargement des catégories existantes...
Chargement des publications existantes...
Chargement des sujets existants...
Traceback (dernier appel en dernier) :
        7: depuis script/import_scripts/smf2.rb:701:in `\u003cmain\u003e'
        6: depuis script/import_scripts/smf2.rb:28:in `run'
        5: depuis script/import_scripts/smf2.rb:28:in `new'
        4: depuis script/import_scripts/smf2.rb:62:in `initialize'
        3: depuis script/import_scripts/smf2.rb:274:in `create_db_connection'
        2: depuis script/import_scripts/smf2.rb:274:in `new'
        1: depuis /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect' : Le chiffrement RSA n'est pas pris en charge - le plugin caching_sha2_password a été compilé avec le support GnuTLS (Mysql2::Error)

Cela semble être un problème lié au script, car je peux installer le client MySQL dans le conteneur et accéder à la base de données dans le conteneur MySQL via la ligne de commande.

OK. Donc, pour ceux d’entre vous qui tombent sur ce message, j’ai dû faire pas mal de modifications pour faire fonctionner ce script d’importation.

Le conteneur Docker MySQL est en version 8.

Pour une raison quelconque, cela signifie que la bibliothèque MariaDB incluse dans le modèle MySQL ne fonctionne pas.

Voici ce que j’ai fait différemment de Migrate an SMF2 forum to Discourse :

Je n’ai pas inclus le fichier de modèle MySQL dans le fichier de configuration du conteneur d’importation.

J’ai construit le conteneur d’importation, puis je suis entré dedans avec ./launcher enter import.

Ensuite :

echo "gem 'mysql2'" >> Gemfile
wget https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
dpkg -i mysql-apt-config_0.8.17-1_all.deb

Cela affiche une invite interactive où vous pouvez sélectionner les paramètres par défaut (MySQL 8 avec les outils).

Ensuite, j’ai installé la bibliothèque MySQL 8 standard et poursuivi la construction :

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y libmysqlclient-dev
su discourse -c 'bundle config unset deployment'
su discourse -c 'bundle install --no-deployment --path vendor/bundle --jobs 4 --without test development'

Une fois tout cela terminé, le reste était identique ; l’importation est maintenant en cours d’exécution.

Les développeurs de Discourse pourraient souhaiter ajuster les scripts d’importation pour prendre cela en compte. En tout cas, cela est désormais disponible sur les forums pour que d’autres puissent le voir s’ils rencontrent les mêmes problèmes que moi.

3 « J'aime »