Salut à tous, j’espère vraiment que quelqu’un pourra m’aider avec une migration de Flarum vers Discourse sur laquelle je travaille. J’ai dû pallier un énorme manque de connaissances de ma part et résoudre quelques erreurs en me basant sur des hypothèses que l’importateur actuel semble faire (par exemple, les préfixes de base de données). Après tout cela, j’ai réussi à importer les Catégories et les Utilisateurs !
Mais maintenant, je rencontre des problèmes pour importer les vrais Sujets, qui sont bien sûr l’un des éléments les plus importants. Et malheureusement, je trouve très peu d’informations sur le message d’erreur spécifique que je reçois. Il y a un seul sujet plus ancien ici dans Meta qui n’a jamais reçu de réponse, donc pas d’aide de ce côté-là. J’espère pouvoir mieux faire.
Voici le message d’erreur complet. La partie vers le bas semble être le point critique. La « valeur de clé en double » identifiée semble vraiment vague, donc je suis bloqué. Merci d’avance pour tout éclaircissement que vous pourrez fournir !
Une erreur s'est produite lors du chargement de ./script/import_scripts/flarum_import.rb.
Failure/Error: return exec_without_profiling(*args, &blk) unless SqlPatches.should_measure?
PG::InFailedSqlTransaction:
ERROR: current transaction is aborted, commands ignored until end of transaction block
# ./script/import_scripts/base.rb:243:in `ensure in block in all_records_exist?'
# ./script/import_scripts/base.rb:243:in `block in all_records_exist?'
# ./script/import_scripts/base.rb:224:in `all_records_exist?'
# ./script/import_scripts/flarum_import.rb:122:in `block in import_posts'
# ./script/import_scripts/base.rb:874:in `block in batches'
# ./script/import_scripts/base.rb:873:in `loop'
# ./script/import_scripts/base.rb:873:in `batches'
# ./script/import_scripts/flarum_import.rb:101:in `import_posts'
# ./script/import_scripts/flarum_import.rb:32:in `execute'
# ./script/import_scripts/base.rb:47:in `perform'
# ./script/import_scripts/flarum_import.rb:162:in `<top (required)>'
# ------------------
# --- Caused by: ---
# PG::UniqueViolation:
# ERROR: duplicate key value violates unique constraint "import_ids_pkey"
# DETAIL: Key (val)=(3) already exists.
# ./script/import_scripts/base.rb:231:in `block in all_records_exist?'
Aucun exemple trouvé.
Terminé en 0,00004 secondes (les fichiers ont pris 5,56 secondes à charger)
0 exemples, 0 échecs, 1 erreur survenue en dehors des exemples
Cela ressemble à un index corrompu, ce qui est surprenant. Quelle version de PostgreSQL utilisez-vous ? Je procéderais probablement à l’effacement de la base de données et réessaierais. De toute façon, vous devrez probablement le faire à plusieurs reprises au fur et à mesure que vous résolvez d’autres problèmes liés aux sujets.
L’autre option consiste à tenter de reconstruire cet index et de supprimer les enregistrements en double jusqu’à ce que cela fonctionne.
Merci, Jay ! J’ai malheureusement perdu cette installation de Discourse à cause de, eh bien, de ma propre étourderie (mauvaise gestion d’une machine virtuelle). Je ne peux donc pas revenir en arrière pour vérifier, ni suivre les dépannages recommandés, ce qui me fait me sentir assez mal/idiote. Mais c’est comme ça.
Ce que je peux vous dire, c’est que j’ai suivi les instructions de configuration de Discourse sur Ubuntu :
Il s’agit donc de la version de Postgres installée de cette manière. J’avais déjà essayé d’importer à plusieurs reprises sans avoir vidé la base de données entre-temps, ce qui pourrait peut-être expliquer le problème.
J’ai opté pour la méthode de l’environnement de développement Ubuntu plutôt que l’approche Docker, car lors de mes précédentes tentatives (sur Digital Ocean), aucune des instructions que je trouvais pour faire, eh bien, quoi que ce soit, ne fonctionnait, car, apparemment, tout se trouvait à l’intérieur de Docker/conteneurs et nécessitait une approche différente.
Je fonctionne malheureusement à la limite de mes compétences ici, mais cela valait au moins la peine d’essayer de le faire moi-même. Avec ce gros revers et la certitude qu’il reste probablement d’autres étapes de dépannage à venir, je pense qu’il est très probable qu’il soit temps de faire appel à une aide professionnelle. Je vais donc essayer de trouver un budget pour cela.