Pas de budget pour cela. Mais. Peut-être.
Quelqu’un a-t-il rencontré ce problème lors de l’exécution du script d’importation ?
Traitement des publications en cours…
37785 / 48843 ( 77,4 %) Arrêté*
Le processus a été arrêté avant d’être terminé. Lorsque je charge les forums, les messages importés semblent être présents, mais je crains que l’opération ne se soit pas terminée proprement et qu’il y ait des problèmes.
Des recommandations ? Peut-être une erreur de mémoire insuffisante ? Puis-je simplement relancer le script pour reprendre là où il s’est arrêté, ou va-t-il tenter de réimporter des données en double ? Merci.
Relancez le script. Il ne dupliquera pas les données.
Merci, @pfaffman ! Cela a très bien fonctionné.
Bonjour,
Tout d’abord, merci pour ce guide fantastique. J’apprécie le travail qui a été accompli.
Concernant mon problème :
Je rencontre des difficultés pour me connecter à la base de données lorsque j’exécute le script d’importation, bien que j’utilise MariaDB pour héberger le dump vBulletin au lieu de MySQL. J’ai vérifié que MariaDB est en cours d’exécution, que je peux importer mon dump vBulletin dedans, et j’ai revérifié à quatre reprises le nom d’utilisateur, l’hôte et le mot de passe dans le script, mais toujours sans succès.
J’ai l’impression qu’il me manque quelque chose de simple. Si quelqu’un pouvait m’orienter dans la bonne direction, ce serait très utile.
Voici les versions que j’utilise :
mysql2 0.5.2
mariadb-server-10.3
discourse master commit git cb8fa46
Description complète ci-dessous
Lorsque j’essaie d’exécuter :
apt-get update && apt-get install libmysqlclient-dev mysql-server-5.7
Je reçois une erreur :
E: Le paquet 'libmysqlclient-dev' n'a pas de candidat d'installation
E: Le paquet 'mysql-server-5.7' n'a pas de candidat d'installation
Ce qui est logique, peut-être que ces paquets ont été retirés du dépôt depuis.
Donc, à la place, j’exécute :
apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
MariaDB fonctionne comme un remplacement direct, ce qui est pratique car toutes les étapes fonctionnent jusqu’à ce que j’essaie d’exécuter le script de migration, moment où j’obtiens l’erreur suivante :
root@discourse:/src# su discourse -c 'bundle exec ruby script/import_scripts/vbulletin.rb'
root:@localhost veut vb4
Chargement des groupes existants...
Chargement des utilisateurs existants...
Chargement des catégories existantes...
Chargement des publications existantes...
Chargement des sujets existants...
==================================================
Accès refusé pour l'utilisateur 'root'@'localhost'
Impossible de se connecter à la base de données.
Hôte : localhost
Nom d'utilisateur : root
Mot de passe :
Base de données : vb4
Modifiez le script ou définissez ces variables d'environnement :
export DB_HOST="localhost"
export DB_NAME="vbulletin"
export DB_PW=""
export DB_USER="root"
export TABLE_PREFIX="vb_"
export ATTACHMENT_DIR '/chemin/vers/votre/dossier/jointures'
Sortie.
Pour les permissions :
root@discourse:/src# mysql
Bienvenue sur le moniteur MariaDB. Les commandes se terminent par ; ou \g.
Votre ID de connexion MariaDB est 59
Version du serveur : 10.3.17-MariaDB-0+deb10u1 Debian 10
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab et autres.
Tapez 'help;' ou '\h' pour obtenir de l'aide. Tapez '\c' pour effacer la déclaration de saisie actuelle.
MariaDB [(none)]> show grants;
+------------------------------------------------------------------------------------------------+
| Grants for root@localhost |
+------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)
J’ai vérifié à deux reprises le nom d’utilisateur et le mot de passe à plusieurs reprises, et je les ai même définis manuellement.
J’ai creusé un peu plus et j’ai découvert que le changement d’image de base d’Ubuntu 16.04 vers Debian est certainement la cause pour laquelle MySQL n’est plus disponible, mais je suis toujours perplexe quant à la manière de faire en sorte que mysql2 se connecte à MariaDB.
J’ai soumis une PR il y a quelque temps qui fait que le fichier mysql-dep.template.yml utilise MariaDB. Je l’ai utilisé à plusieurs reprises.
Il semble que vous essayiez de ne pas utiliser de mot de passe ? Je recommande d’en utiliser un. Le script suppose qu’il y a un mot de passe.
C’est noté. Je vais essayer de définir un mot de passe et voir si cela fonctionne. D’après ce que j’ai compris, le script d’importation devrait néanmoins fonctionner avec MariaDB. Si c’est le cas, je continuerai à dépanner. Merci pour votre aide rapide !
@pfaffman C’était bien ça ! Merci beaucoup. Une fois que j’aurai mis mon forum en ordre, je pourrai vous envoyer une PR pour une version VB3 au cas où elle serait utile à quelqu’un.
Ceci est aussi mon instance de test, donc je n’ai aucun problème à publier les détails, elle va être démantelée ![]()
Merci à tous pour votre aide, la migration s’est bien déroulée dans l’ensemble. Il manquait quelques pièces jointes çà et là, mais globalement, tout s’est très bien passé.
Pour ceux qui liront ceci à l’avenir, j’ai migré depuis Vb3.8.7.
J’ai dû apporter quelques modifications à la requête SQL dans vbulletin.rb, car la structure de ma base de données ne correspondait pas exactement au script, bien qu’elle fût très proche. J’ai décidé d’abandonner les légendes personnalisées pour faire avancer les choses.
Diff GitHub : File fix other by canyon289 · Pull Request #1 · canyon289/discourse · GitHub
Pour l’installation de MariaDB qui remplace MySQL, j’ai utilisé la commande suivante :
apt-get update && apt-get install mariadb-server-10.3 libmariadbd-dev
Et pour changer le mot de passe de MariaDB de null à une valeur, ce lien était le plus complet :
Encore une fois, je ne peux pas assez remercier les personnes de ce fil de discussion, ainsi que tous les contributeurs à Discourse pour leur code et leur aide !
Je viens de terminer une migration, et elle a attribué à plus de 2 000 sujets une catégorie héritée de l’instance vBulletin 4. Le système m’empêche de supprimer cette catégorie et de réattribuer tous ces posts migrés à aucune catégorie sélectionnée. « Impossible de supprimer cette catégorie car elle contient 2322 sujets »
Existe-t-il une solution de contournement ?
Soit refaites la migration, soit modifiez la catégorie de ces sujets. Avec un tel nombre, vous devrez le faire depuis la ligne de commande Ruby.
Bonjour,
Je ne suis pas certain du contexte de ceci.
Copiez les pièces jointes vers votre instance Discourse (pour le chemin, vérifiez vos paramètres VB4).
Quelqu’un peut-il s’il vous plaît aider ?
Bonjour,
J’ai remarqué qu’il existe un script pour vBulletin 5, mais je ne trouve aucun retour d’expérience à son sujet. Les informations de ce sujet s’appliquent-elles également à ce script ?
Merci !
Le script devrait fonctionner de manière très similaire.
L’exécution d’une importation pour une installation vB4 échoue lors de l’importation des catégories enfants. Merci de me supporter, je suis un débutant en Rails/Ruby.
Traceback (most recent call last):
20: from script/import_scripts/vbulletin.rb:943:in `<main>'
19: from /home/vagrant/discourse/script/import_scripts/base.rb:47:in `perform'
18: from script/import_scripts/vbulletin.rb:84:in `execute'
17: from script/import_scripts/vbulletin.rb:293:in `import_categories'
16: from /home/vagrant/discourse/script/import_scripts/base.rb:403:in `create_categories'
15: from /home/vagrant/discourse/script/import_scripts/base.rb:403:in `each'
14: from /home/vagrant/discourse/script/import_scripts/base.rb:422:in `block in create_categories'
13: from /home/vagrant/discourse/script/import_scripts/base.rb:454:in `create_category'
12: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/suppressor.rb:48:in `save!'
11: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:319:in `save!'
10: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
9: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:212:in `transaction'
8: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `transaction'
7: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
6: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
5: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
4: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/database_statements.rb:281:in `block in transaction'
3: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
2: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/transactions.rb:319:in `block in save!'
1: from /home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/validations.rb:53:in `save!'
/home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/validations.rb:81:in `raise_validation_error': Validation failed: Slug is invalid (ActiveRecord::RecordInvalid)
J’ai ajouté une sortie de débogage pour diagnostiquer le problème. La valeur de slug dans la catégorie est nil.
La catégorie semble valide lorsqu’elle boucle sur create_categories(children_categories) do |category|. J’ai également fait journaliser opts, import_id et new_category (juste avant .save!) depuis def create_category dans base.rb. Tout semble valide par rapport à ce que les fonctions attendent.
Est-ce que quelqu’un a déjà rencontré cela ?
37 / 53 ( 69.8%) [345139 items/min]
category:
{"forumid"=>355, "title"=>"News", "description"=>"RSS Feed", "displayorder"=>6, "parentid"=>205}
Entering create_category...
opts:
{:id=>355, :name=>"News", :position=>6, :description=>"RSS Feed", :parent_category_id=>6}
import_id:
355
new_category:
#<Category id: nil, name: "News", color: "BF1E2E", topic_id: nil, topic_count: 0, created_at: nil, updated_at: nil, user_id: -1, topics_year: 0, topics_month: 0, topics_week: 0, slug: nil, description: nil, text_color: "FFF", read_restricted: false, auto_close_hours: nil, post_count: 0, latest_post_id: nil, latest_topic_id: nil, position: 6, parent_category_id: 6, posts_year: 0, posts_month: 0, posts_week: 0, email_in: nil, email_in_allow_strangers: false, topics_day: 0, posts_day: 0, allow_badges: true, name_lower: nil, auto_close_based_on_last_post: false, topic_template: nil, contains_messages: nil, sort_order: nil, sort_ascending: nil, uploaded_logo_id: nil, uploaded_background_id: nil, topic_featured_link_allowed: true, all_topics_wiki: false, show_subcategory_list: false, num_featured_topics: 3, default_view: nil, subcategory_list_style: "rows_with_featured_topics", default_top_period: "all", mailinglist_mirror: false, minimum_required_tags: 0, navigate_to_first_post_after_read: false, search_priority: 0, allow_global_tags: false, reviewable_by_group_id: nil, required_tag_group_id: nil, min_tags_from_required_group: 1>
Traceback (most recent call last):
Notre développeur a essayé le script, mais n’a pas pu aller très loin. Quelqu’un serait-il intéressé à le faire pour nous dans le cadre d’une mission de conseil ?
Bien sûr, envoyez-moi un MP.
Veuillez m’excuser pour mon ignorance, mais comment envoyer un MP ? Je n’ai pas trouvé cela évident. Sinon, vous pouvez m’envoyer un e-mail directement à l’adresse abboud@cedrus.com.
Question concernant l’importation : certains messages de notre forum basé sur vBulletin contiennent des liens vers d’autres messages du même forum. Ces liens sont-ils convertis lors de l’importation ? Sinon, que deviennent-ils ? Sont-ils supprimés ?
Je ne me souviens pas si la version actuelle les réécrit. Le script que j’ai (que je compte soumettre via une PR) les corrige.


